JQueryのchangeイベント実行 削除
Message#3 2018年10月29日(月)16時19分 From: 斎藤 |
見ていただき、ありがとうございます。 JQueryはほとんど理解できていないので間違っているかもしれませんが、 この部分がイベントで実行されると思います。 > $('#add_filter_select').change(function() { > addFilter($(this).val(), '', []); 実際の動作は、「フィルタ追加」のセレクトボックスで選択したものに 応じて、新たにセレクトボックスが表示されるというものです。 '#add_filter_select'に値を入れることはできたのですが、表示される はずのセレクトボックスが表示されなかったので、changeイベントが 実行されていないためと思いました。 ジャッカルのメッセージ(#2)への返事 > どれがJQueryのイベントコード? > > > > Redmineというプロジェクト管理ツールから、登録されているチケットをVBAで取得しようとしています。取得処理の中で、セレクトボックスを選択した後でJQueryのchangeイベントが発生する箇所があるのですが、イベントの起動ができません。本掲示板の過去スレッドに出ていた方法も試したのですが、うまくいきませんでした。 > > みなさんの知恵をお借りしたいです。よろしくお願いします。 > > > > <対象ページの構造> > > 1)HTMLの内容 > > ★で要素を選択すると、要素に応じたセレクトボックスが表示されます。 > > td class="add-filter" > > label for="add_filter_select"?フィルタ追加 /label > > select id="add_filter_select".../select★ > > /td > > > > 2)イベントの確認 > > ブラウザでselect id="add_filter_select"でEvent Listeners を > > 確認すると、以下の通りでした。 > > ▼change > > ▼select#add_filter_select > > application.js?1396112202:78 > > useCapture: true > > passive: false > > once: false > > ▼handler: f() > > ?[[scopes]]: Scopes[1] > > [[FunctionLocation]]: <unknown> > > ?__proto__: f() > > ?prototype: {constructor: f} > > name: "" > > length: 0 > > caller: null > > arguments: null > > guid: 24 > > > > handler の後のf() にマウスを乗せると、 > > function() { addfilter($this).val(), '',[]; } > > と表示されました。 > > > > 3)ソースの確認 > > handlerのf()で"Show Function Definition"を実行すると > > 以下のソールが表示・選択されました。 > > function initFilters() { > > $('#add_filter_select').change(function() { > > addFilter($(this).val(), '', []); > > }); > > > > <試したこと> > > 1)以下の方法では、値がセレクトボックスに表示されましたがイベント > > は発生しませんでした。 > > Dim evt As Object > > Set evt = objIE.document.createEvent("HTMLEvents") > > evt.initEvent "change", True, False > > > > objIE.document.getElementById("add_filter_select").Value = "tracker_id" > > objIE.document.getElementById("add_filter_select").dispatchEvent evt > > > > 2)以下の方法も、値がセレクトボックスに表示されただけでイベント発生せず。 > > Dim evt As Object > > Set evt = objIE.document.createEvent("HTMLEvents") > > evt.initEvent "change", True, False > > > > With objIE.document.getElementById("add_filter_select") > > .Value = "tracker_id" > > .dispatchEvent evt > > End With > > > > 3)JQueryを直接起動する(つもり。JavaScriptやJQueryは良く分から > > ないので、Webに出ていたものを例にやってみました) > > これも、値は表示されましたがイベントは起きませんでした。 > > > > Dim evt As Object > > Set evt = objIE.document.createEvent("HTMLEvents") > > evt.initEvent "change", True, False > > > > objIE.document.getElementById("add_filter_select").Value = "tracker_id" > > objIE.navigate "JavaScript:addfilter('add_filter_select')" > > > > 以上です。 |
上のメッセージを削除します。
よければパスワードを入力し、削除ボタンをクリックしてください。