2010-02-02 89 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會觸發。