![](/img/trans.png)
[英]how to set the selected option of a select element without triggering a change event?
[英]How do I select an option of select after triggering an event
我有一個jQuery回傳,並在收到JSON回復后更改了輸入類型選擇的值,如下所示
$('#new-address select[name=\'country_id\']').val(data['country_id']).trigger('change');
$('#new-address select[name=\'zone_id\']').val(data['zone_id']);
在更改選定值之后,我觸發了一個事件“更改”以填充狀態選擇輸入,此后,我想更改狀態選擇輸入的選定值,但是從上面的代碼中,它沒有更改狀態選擇的值,而是填充狀態。
因此,我認為可能是觸發此功能后控件沒有返回,因此要測試我是否發出警報以查看它是否即將來到這里
$('#new-address select[name=\'country_id\']').val(data['country_id']).trigger('change');
alert('came here');
$('#new-address select[name=\'zone_id\']').val(data['zone_id']);
經過測試后,我得到警告,說是來到這里,單擊“確定”后,狀態的值會根據需要更改。
那么,我的方法之前有什么問題,為什么添加警報后它仍然可以正常工作? 我應該做什么改變才能得到我想要的東西?
提前致謝。
我不確定這是正確還是錯誤的方法,但是對我有用。 正如@abhi所建議的那樣,javascript是按順序運行的,因此我將代碼更改為:
$('#new-address select[name=\'country_id\']').val(data['country_id']);
var selectedstate = data['zone_id'];
$.get(
"index.php?route=common/home/country&token=<?php echo $token;?>",
{ 'country_id': data['country_id'] },
function(json) {
html = '<option value=""><?php echo $text_select; ?></option>';
if (json['zone'] != '') {
for (i = 0; i < json['zone'].length; i++) {
html += '<option value="' + json['zone'][i]['zone_id'] + '"';
if (parseInt(json['zone'][i]['zone_id']) == parseInt(selectedstate)) {
html += ' selected="selected"';
}
html += '>' + json['zone'][i]['name'] + '</option>';
}
} else {
html += '<option value="0" selected="selected"><?php echo $text_none; ?></option>';
}
$('#new-address select[name=\'zone_id\']').html(html);
},
'json'
);
通過這樣做,我得到了我想要的,因為在為狀態選擇創建html時設置了狀態的選定值。
這與ajax調用的async屬性有關。 不建議這樣做,但可以將其設置為false,並且應該可以正常工作。 或者您真的需要學習如何使用回叫功能 !
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.