当在其他地方以编程方式检查复选框时,如何使jQuery代码执行?

时间:2011-08-03 20:26:17

标签: javascript jquery

我有一个带有下拉框(<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.
        }
    });
});

3 个答案:

答案 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.. 
}