2010-02-02 90 views
3

我有一个复选框的页面,我想运行一个JavaScript函数,当有变化(我做了一些非常类似于下拉的 - 这工作)asp.net mvc:复选框onchange不工作

然而,随着的复选框的我有三个问题:

  1. 我onChange事件只运行“有时”(你必须改变不同的复选框的重点控制

  2. 当它运行正在返回前一个chec的结果KBOX(不是一个刚刚点击)

  3. jQuery的总是返回true值

复选框创建

<%= 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); 
     }; 

回答

3

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

也许像这样使用jQuery直播(未经测试,把我的头顶部):

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

啊!是的,我的winforms背景在那里填满了我,我把它改为onclick而不是onchange,并且proc按照我的预期开了火。 JQuery对于复选框的值始终返回true,但是 – 2010-02-02 02:34:14

+0

Doh。尝试$(“#sl-”+ providerId).attr('checked') – ongle 2010-02-02 04:00:39

0

发生了什么事:

  1. 复选框中点击
  2. 复选框乙点击
  3. 复选框A失去焦点并引发火灾onChange

这使得看起来好像复选框B正在返回复选框A的结果。如果您在此场景中单击复选框B后按下Tab,您会注意到它的onChange会触发。