asp.net mvc:复选框onchange不起作用

时间:2010-02-02 00:35:29

标签: asp.net-mvc javascript-events

我有一个带有一组复选框的页面,我想在有更改时运行一个javascript函数(我已经做了一些非常类似于下拉列表 - 并且有效)

然而,对于复选框,我有三个问题:

  1. 我的onChange事件仅“有时”运行(您必须在不同的复选框控件之间更改焦点

  2. 当它运行时,它返回上一个复选框的结果(不是刚刚点击的那个)

  3. jQuery总是返回值true

  4. 复选框创建

    <%= Html.CheckBox("sl-" + row.Id, value, new { onChange = "SuitabilityChecked("+row.Id+", "+key+")"})%>
    

    的Javascript

    function SuitabilityChecked(providerId, parentRecordId) {
                var params = {};
                params.providerId = providerId;
                params.parentRecordId = parentRecordId;
    
                var value = $("#sl-" + providerId).val();               
    
                params.value = value;            
                $.getJSON("SuitabilityChecked", params, null);
            };
    

2 个答案:

答案 0 :(得分:3)

浏览器对于单选按钮和复选框很有趣,可以延迟更改直到焦点更改。尝试添加onclick事件以模糊或直接调用更改事件。

使用jQuery Live可能是这样的事情(未经测试,在我的脑海中):

$(':checkbox').live('click', function() { $(this).change(); });

答案 1 :(得分:0)

发生了什么:

  1. 复选框A单击
  2. 复选框B点击
  3. 复选框A失去焦点并触发 onChange
  4. 这使得Checkbox B看起来好像是返回Checkbox A的结果。如果您在此方案中单击Checkbox B后按Tab键,您会注意到它的 onChange 会触发。