我想要一个网页上的复选框。当我单击它时,它会向服务器发送一个ajax请求。当服务器回复时,我想要更改复选框。我可以解决所有问题,除了复选框在点击时立即改变状态这一事实。
答案 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)
我认为你应该使用其他方法。也许是一个按钮/图像按钮,因为你想要点击一些动作来表示用户的特定命令(欲望)。我将尝试更好地解释:我认为你在页面中有一些信息和一些小工具,用户可以点击并做一些事情(将项目添加到购物车),我认为如果小工具具有更多的视觉吸引力,它会更有用用户而非复选框(例如“添加”)。
希望得到这个帮助。