JQueryのchangeイベント実行 削除
Message#4 2018年11月8日(木)23時33分 From: ジャッカル |
それなら 直で addFilter($(this).val(), '', []); を実行したらいいってことだね。 > 見ていただき、ありがとうございます。 > > 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')" > > > > > > 以上です。 |
上のメッセージを削除します。
よければパスワードを入力し、削除ボタンをクリックしてください。