我有以下选择列表:
<select id="AccountID">
<option value='0000'>Select Account</option>
<option value='002M'>test1</option>
<option value='002N'>test2</option>
<option value='002P'>test3</option>
</select>
用户进行新选择后,我需要执行以下操作,将上面的列表替换为不包含“选择帐户”选项的列表
function SelectAccounts() {
$.ajax({
url: "/Administration/Accounts/GetOptions",
data: { ds: $('#DataSourceID').val(),
ac: '0000'
},
success: function (data) {
$('#AccountID').html(data);
}
});
}
有没有办法可以改变:
$('#AccountID').change(SelectAccounts);
这样它只调用SelectAccounts IF如果选择列表中有一个选项“0000”?
答案 0 :(得分:3)
当然,只需使用匿名函数:
$('#AccountID').change(function() {
if ($(this).find('option[value="0000"]').length > 0) {
SelectAccounts();
} else {
// Option not present
}
);
或选择器:
$(document).on('change', '#AccountID:has(option[value="0000"])', SelectAccounts);
// Use a more specific selector for the parent of `#AccountID`.
答案 1 :(得分:2)
在一般意义上,您可以测试select元素是否具有特定选项,如下所示:
if ($("#AccountID option[value='0000']").length > 0) {
// option exists
}
但是,您最好只删除更改处理程序:
// within the success handler of your ajax call:
$("#AccountID").html(data).off("change");
或者,如果使用旧版本的jQuery,请使用.unbind("change")
。
答案 2 :(得分:1)
当然,你只要问:
if(!!$("#AccountID option[value=0000]").length)) {
// code
}
答案 3 :(得分:1)
您可以尝试:
$('#AccountID').change(function() {
if ($(this).find('option[value="0000"]').length > 0) {
SelectAccounts();
}
});
好奇,你真的需要使用AJAX改变选项吗?如果它们非常简单,可以提前做好准备吗?