2014-02-19 59 views
1

我有單選按鈕。 Ajax請求在點擊上執行並返回響應。變量接收結果(truefalse)。我需要的是使無線電只有檢查ajax是成功的。但在調用ajax之前它已被標記。Jquery單選按鈕preventDefault點擊事件,如果Ajax失敗

$('input[type="radio"]').on('click',function (e){ 
    var success = callAjax(); 
    if (!success) 
     e.preventDefault(); 
}); 

Upd。

使用preventDefault的原因是將前一個單選按鈕選中。不只是取消當前。

+0

更新的答案,請檢查... –

回答

1

使用$(this).prop("checked",false);在ajax返回true時檢查單選按鈕。

下面的代碼可以幫助你..

$('input[type="radio"]').on('click',function (e){ 
    var success = callAjax();; 
    if (!success){ 
     e.preventDefault(); 
     $(this).prop("checked",false); 
    } 
}); 

對於現場演示,請檢查JSFIDDLE

+0

看到更新。謝謝 – Ahmed

1
$('input[type="radio"]').on('click',function (e){ 
    var success = callAjax(); 
    if (!success){ 
     $(this).prop('checked', false); 
    } 

}); 
+0

檢查更新。謝謝 – Ahmed

0

所有的AJAX請求異步運行,這意味着你不會得到正確後響應你的AJAX請求被執行。

你需要改變你的代碼位,使其工作:

$('input[type="radio"]').on('click',function (e){ 
    var _this = this; 
    var currentState = $(this).prop("checked"); 
    callAjax(function(success) { 
     if (!success) 
      $(_this).prop("checked", !currentState); 
    }); 
}); 

你應該改變你的callAjax方法來接收一個回調函數的參數,然後調用請求完成與success參數。

我希望你有一個主意!

+0

檢查更新,謝謝 – Ahmed

0

你可以查看/取消使用您的複選框:

$("#chkBox").attr('checked', false); //uncheck 
$("#chkBox").attr('checked', true); //check