我有单选按钮。单击 Ajax 请求并返回响应。 success
变量会收到结果(true
或false
)。我需要的是仅在 ajax 成功时才检查无线电。但它在调用ajax之前标记为已检查。
$('input[type="radio"]').on('click',function (e){
var success = callAjax();
if (!success)
e.preventDefault();
});
UPD。
使用preventDefault的原因是选中前一个单选按钮。不只是取消选中当前。
答案 0 :(得分:1)
当ajax返回true时,使用$(this).prop("checked",false);
检查单选按钮。
以下代码可以帮助您..
$('input[type="radio"]').on('click',function (e){
var success = callAjax();;
if (!success){
e.preventDefault();
$(this).prop("checked",false);
}
});
现场演示请查看JSFIDDLE
答案 1 :(得分:1)
$('input[type="radio"]').on('click',function (e){
var success = callAjax();
if (!success){
$(this).prop('checked', false);
}
});
答案 2 :(得分: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
参数调用请求完成。
我希望你有个主意!
答案 3 :(得分:0)
您可以使用以下方式选中/取消选中您的复选框:
$("#chkBox").attr('checked', false); //uncheck
$("#chkBox").attr('checked', true); //check