单击时禁止更改复选框

时间:2008-10-10 12:38:52

标签: javascript checkbox

我想要一个网页上的复选框。当我单击它时,它会向服务器发送一个ajax请求。当服务器回复时,我想要更改复选框。我可以解决所有问题,除了复选框在点击时立即改变状态这一事实。

6 个答案:

答案 0 :(得分:4)

你确定你真的想要这个吗? Ajax-Request可以花时间。当用户没有得到反馈时,他们可能会一次又一次地点击,直到发生某些事情。当这个按钮停用时(一段时间后再次),用户会更加困惑。

而是考虑提供即时反馈(例如,检查框)并在其旁边显示指示器,其指示与服务器(例如着名的旋转轮)的通信。返回结果时,隐藏指示符并根据需要取消激活复选框。您可能还希望禁止在ajax请求期间发布表单。

答案 1 :(得分:2)

您可能会执行以下操作:单击复选框时,将复选框设置为“已禁用”(这会使复选框变灰并使其无法使用),进行ajax调用,一旦获得ajax返回,请删除从复选框中“禁用”。像这样的东西(使用jQuery,未经测试):

$('#mycheckbox').click( function() {
  var checkbox = this;
  $(checkbox).attr('disabled','1');
  $.post( url, data, function() {
    // if successful
    $(checkbox).removeAttr('disabled');
  }
}

答案 2 :(得分:1)

添加到你的onclick“return false;”它不应该改变。

答案 3 :(得分:1)

<input id="theChkbox" type="checkbox" onclick="this.checked=!this.checked;sendAjaxRequest(this);">

this.checked=!this.checked会将复选框的状态重置为单击之前的状态。这应该适用于所有浏览器,没有状态闪烁(太多)。

sendAjaxRequest()将发挥你的魔力,当请求返回时,设置复选框的相应选中状态。将this传递给sendAjaxRequest()应该会提供对复选框的引用,以便您可以调整其状态。如果做不到这一点,只需使用document.getElementById("theChkbox")来检索对它的引用以设置其状态。

答案 4 :(得分:0)

您可以使用checkbox.checked=NOT checkbox.checked启动onchange方法(您可能需要根据您选择的语言对其进行修改),您可能会得到一个闪烁,但它应该足够快地恢复它。

答案 5 :(得分:0)

我认为你应该使用其他方法。也许是一个按钮/图像按钮,因为你想要点击一些动作来表示用户的特定命令(欲望)。我将尝试更好地解释:我认为你在页面中有一些信息和一些小工具,用户可以点击并做一些事情(将项目添加到购物车),我认为如果小工具具有更多的视觉吸引力,它会更有用用户而非复选框(例如“添加”)。

希望得到这个帮助。