【问题标题】:I can't trigger Wicket onchange event我无法触发 Wicket onchange 事件
【发布时间】:2019-10-12 00:35:42
【问题描述】:

我正在尝试使用 chrome 扩展自动填充三个下拉选择元素。我可以更改第一个下拉列表的值,但这不会触发 onchange 事件中的检票口。 wicket 应该根据第一个选择加载第二个和第三个下拉列表。我在这里错过了什么。

可以用

改变第一个选择的值
( "select:first-of-type" ).val( "2" );

尝试触发 on 更改,

$( "select:first-of-type" ).change();
$( "select:first-of-type" ).trigger('change');
$( "select:first-of-type" ).triggerHandler('change');
$( "select:first-of-type" ).trigger('onchange');
$( "select:first-of-type" ).triggerHandler('onchange');

等等等等这些都没有填充第二个和第三个选择。

<div id="new-criteria">
<select name="tabContent:contentPanel:searchCriteriaPanel:newSearchCriteria:searchFie 
ldDropDown" id="id62a9" onchange="if (function(){return 
Wicket.$(&#039;id62a9&#039;) != null;}.bind(this)()) { 
Wicket.showIncrementally(&#039;veil&#039;);}var 
wcall=wicketAjaxPost(&#039;https://www.example.com?1343- 
2.IBehaviorListener.0-tabContent-contentPanel-searchCriteriaPanel- 
newSearchCriteria-searchFieldDropDown&#039;, 
wicketSerialize(Wicket.$(&#039;id62a9&#039;)),function() { 
;Wicket.hideIncrementally(&#039;veil&#039;);}.bind(this),function() { 
;Wicket.hideIncrementally(&#039;veil&#039;);}.bind(this), function() {if 
(!function() {return Wicket.$(&#039;id62a9&#039;) != null;}.bind(this)()) 
{Wicket.hideIncrementally(&#039;veil&#039;);}return 
Wicket.$(&#039;id62a9&#039;) != null;}.bind(this));">
<option selected="selected" value="">Choose One</option>
<option value="0">Opperation</option>
<option value="1">Selection</option>
<option value="2">Category</option>

</select>
<select name="tabContent:contentPanel:searchCriteriaPanel:newSearchCriteria:operatorDropDown" disabled="disabled">
<option selected="selected" value="">Choose One</option>
</select>
<span class="value">
<input type="text" value="" name="tabContent:contentPanel:searchCriteriaPanel:newSearchCriteria:value:valueField"     disabled="disabled"/>
    </span>

更改第一个值,但不填充其他 2 个

【问题讨论】:

  • 使用纯DOM事件:$('select:first-of-type')[0].dispatchEvent(new Event('change', {bubbles: true}))
  • 运气不好只是刷新页面

标签: jquery html google-chrome-extension automation wicket


【解决方案1】:

我过去在change 事件中也有过一些糟糕的经历。我决定滚动自定义事件并触发它。

所以:

$('.myelement').trigger('customevent')

Wicket

this.add(new AjaxEventBehavior('customevent') {...  } )...

如果您在 JS 中收听 change,您仍然可以决定在您的 DOM 上触发 change,只需确保也从该处理程序触发 customevent

【讨论】:

    猜你喜欢
    • 2011-02-03
    • 2017-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-12
    • 1970-01-01
    相关资源
    最近更新 更多