模拟点击选项并等待更改事件完成

时间:2016-03-11 20:55:26

标签: javascript jquery phantomjs html-select

我正在尝试使用'.each'jquery函数在选项元素上循环来模拟点击。

但是,这个select有一个onchange函数关联,它会改变另一个输入的值。

到目前为止,这是我的代码:

$('#selectItem').on('change', function() {
  console.log( $('#inputToWatch').val() );
});
$('#selectItem').children().each(function( index ) {
    $( this ).attr('selected', 'selected').parent().focus();
    $( this ).parent().change();
});

/*I also tried this way
$('#selectItem').children().each(function( index ) {
    $( this ).attr('selected', 'selected').parent().focus();
    setTimeout(function(){ $( this ).parent().change(); }, 3000);
    console.log( index + ": " + $('#inputToWatch').val() );
});
*/

html看起来像

<select id="selectItem" onchange="changeFunc(this)">
   <option value="option1" selected="selected">option1</option>
   <option value="option2" selected="selected">option2</option>
   <option value="option3" selected="selected">option3</option>
   <option value="option4" selected="selected">option4</option>
</select>

我无法让jquery等到'changeFunc'结束后记录'#inputToWatch'

的值

1 个答案:

答案 0 :(得分:0)

$('#selectItem').children().each(function( index ) {
    $( this ).attr('selected', 'selected').parent().focus();
    $( this ).parent().change();
    myFunction();
});

function myFunction(){
  console.log( $('#inputToWatch').val() );
}

如果我理解正确,myFunction()将在最后两次操作之后被调用。