我有一个带有下拉框(<select id="state"> ... </select>
标记)的HTML表单。我旁边有一个复选框(<input type="checkbox" id="not-from-US" />
)。
HTML下拉列表包含所有美国国家/地区(MO,TX,AL等)的列表。但如果用户不是来自美国,则他/她会选中“Not from US”复选框。现在在jQuery中,我编写了复选框(通过.change()
)以生成一个额外的字段,用于在选中复选框时选择国家/地区。它还使下拉列表选择“N / A”选项。
我还对我的表单进行了编程,这样如果用户从“状态”下拉菜单中选择“N / A”,则会选中“Not from US”复选框。但是,我如何将这两个事件联系在一起?当以编程方式选中该复选框时,选中复选框时的匿名函数不会触发。
我该如何解决这个问题?
编辑抱歉,我忘了附上示例代码。这是:
------------------index.php------------------
<form action="index.php" method="post">
<select id="state">
<option value="None">None</option>
<option selected="true" value="AL">AL</option>
<option value="AK">AK</option>
<option value="AZ">AZ</option>
<!--etc.-->
</select>
<input type="checkbox" id="not-from-usa" name="not-from-usa" />
</form>
------------------main.js------------------
$(document).ready(function(){
$('#state').change(function(){
if ($(this).val() == "None") {
$('#not-from-usa').attr('checked','checked'); // This is the important bit.
// So now the #not-from-usa checkbox is checked. So the code below should execute, right?
} else {
$('#not-from-usa).removeAttr('checked');
}
});
$('#not-from-usa').change(function(){
if($(this).attr('checked')) {
// Create an input element that the user can enter a country
// Code omitted for clarity.
// The code in here should execute once the checkbox is checked or unchecked.
$('#state').val("None"); // Set the dropdown to the "None" selection
} else {
// Remove the extra input element that lets the user enter a country.
}
});
});
答案 0 :(得分:2)
使用checkbox.click()函数,而不是设置checkbox.checked = true;
我已编辑过这篇文章。
答案 1 :(得分:0)
http://api.jquery.com/trigger/可以为您提供所需内容。
使用触发器发送事件。所以只需添加一个$(“复选框”)。触发器('click'); 这应该可以解决问题。
答案 2 :(得分:0)
在纯JavaScript中,您可以使用.checked
属性:
if(document.getElementById("not-from-US").checked) {
//checked, do something
} else {
//not checked, do something..
}