Javascript 禁止在单击复选框时对其进行更改

Javascript 禁止在单击复选框时对其进行更改,javascript,checkbox,Javascript,Checkbox,我想要一个网页上的复选框。当我单击它时,它会向服务器发送一个ajax请求。当服务器回复时,我想更改复选框。我可以修复所有问题,但复选框在单击时会立即更改状态 添加到onclick“return false;”中,它不应更改。您确定要这样做吗?Ajax请求可能需要时间。当用户没有得到反馈时,他们可能会一次又一次地点击,直到发生什么事情。当这停用按钮(一段时间后再次)时,用户会更加困惑 而是考虑提供即时反馈(例如,选中复选框),并在旁边显示一个指示灯,指示与服务器的通信(例如,著名的纺车)。当结果返

我想要一个网页上的复选框。当我单击它时,它会向服务器发送一个ajax请求。当服务器回复时,我想更改复选框。我可以修复所有问题,但复选框在单击时会立即更改状态

添加到onclick“return false;”中,它不应更改。

您确定要这样做吗?Ajax请求可能需要时间。当用户没有得到反馈时,他们可能会一次又一次地点击,直到发生什么事情。当这停用按钮(一段时间后再次)时,用户会更加困惑


而是考虑提供即时反馈(例如,选中复选框),并在旁边显示一个指示灯,指示与服务器的通信(例如,著名的纺车)。当结果返回时,隐藏指示器并根据需要取消选中复选框。您可能还希望在ajax请求期间禁止发布表单。

您可以使用
复选框启动onchange方法。checked=NOT checkbox。checked
(您可能需要根据所选语言修改此方法),您可能会得到闪烁,但它应该足够快地将其恢复。

我认为您确实应该使用其他方法。可能是一个按钮/图像按钮,因为您希望为单击触发一些操作,以表示来自用户的特定命令(愿望)。我将尝试更好地解释:我认为页面中有一些信息和一些小工具,用户可以在其中单击并执行某些操作(将项目添加到购物车),我认为如果小工具比复选框(例如“添加它”)对用户更具视觉吸引力,那么它会更有用


希望有帮助。

您可能会这样做:单击复选框时,将复选框设置为“禁用”(这会使复选框变灰并使其不可编辑),进行ajax调用,一旦获得ajax返回,从复选框中删除“禁用”。类似这样(使用jQuery,未经测试):


this.checked=!此.checked
将复选框的状态重置为单击前的状态。这应该可以在所有浏览器中工作,而不会出现状态闪烁(太多)


sendAjaxRequest()
将发挥您的神奇作用,当请求返回时,设置复选框的相应选中状态。将
传递到
sendAjaxRequest()
应该会给您提供对复选框的引用,以便您可以调整其状态。否则,只需使用
document.getElementById(“theChkbox”)
检索对它的引用以设置其状态。

在某些浏览器中,您可能会看到它忽闪忽灭。如果在返回false之前同步执行其他操作,则复选框将保持选中状态,直到代码到达return语句。我一直认为它是checkbox。checked=false我从未见过=以前没有。嗯,我想如果“NOT”未定义,这可能会起作用。我使用vbscript,所做的只是反转checkbox.checked的设置,无论是哪种方式。顺便说一句,vbscript很难使用。
$('#mycheckbox').click( function() {
  var checkbox = this;
  $(checkbox).attr('disabled','1');
  $.post( url, data, function() {
    // if successful
    $(checkbox).removeAttr('disabled');
  }
}
<input id="theChkbox" type="checkbox" onclick="this.checked=!this.checked;sendAjaxRequest(this);">