好吧,如果列表中有六个按钮,在li
标签下(每个都在rel
到一个数组的一部分),我怎么能禁用一个按钮呢? ? (在这种情况下播放视频)
编辑这就是我现在所做的事情
<li rel='1' id="first">
<div style="top:0px;">
<img src="graphics/filler.png" alt="" width="280" height="128" onClick="asess"/>
</div>
</li>
然后添加相应的功能
function asess() {
document.getElementById("first").disabled = true;
}
我还不关心刚刚添加这个功能,因为首先我想让这部分工作。
编辑我'我有这个,这应该工作,但我想这不是“按”按钮?
$("li, .thumbs").bind("touchstart click", function() {
var $this = $(this);
if (!document.getElementById("first").disabled) {
document.getElementById("first").disabled = true }
else {document.getElementById("first").disabled = false};
});
我知道它只会与具有该ID的按钮(第一个)对话,但只要我能使它适用于一个,我就可以完成其余的工作。那么,我做错了什么?
答案 0 :(得分:1)
每个按钮都有一个onclick event handler。为防止onclick处理程序执行任何操作,附加到处理程序的JavaScript方法应返回false
。如果您使用jQuery return false;
is the same as calling e.preventDefault
(or event.preventDefault
for IE)。
当正常事件处理程序启动与按钮关联的操作时,它应该add the event handler禁用onclick操作。
您可能还需要为按钮应用新的CSS样式,以便用户知道它已被禁用。
当操作完成后,您需要删除禁用onclick操作的事件处理程序并再次使用正常操作。
您可以随时使用标记来表示某个操作正在进行中,并使用操作设置此操作。如果该标志为on,则事件处理程序方法返回false。
通过使用事件处理程序,您还可以在用户尝试并在返回false之前单击按钮时向用户显示警告。
修改强>
以下是您需要的JavaScript类型,首次点击会启动该过程,该过程将在使用setTimeout('stopAction()', 5000);
五秒后自行停止。如果在此期间再次单击该项目,则会收到等待消息。
我建议您使用jQuery开发强大的跨浏览器解决方案。
var inProgress = false;
function asess() {
if(inProgress) {
alert('Please wait ...');
return false;
} else {
startAction();
}
}
function startAction() {
inProgress = true;
alert('Starting');
document.getElementById("first").style.backgroundColor = '#333333';
setTimeout('stopAction()', 5000);
}
function stopAction() {
inProgress = false;
alert('Stopping');
document.getElementById("first").style.backgroundColor = '#FFFFFF';
}
答案 1 :(得分:0)
document.getElementById("my_button").disabled = true;
当你完成时。
document.getElementById("my_button").disabled = false;
答案 2 :(得分:0)
您可以在单击处理程序中“禁用”该元素,并在成功执行回调时重新启用它。
单击处理程序绑定到具有disabled="disabled"
属性的元素不能保证在浏览器中一致地实现(即事件可能/仍将触发),并且除了表单元素之外不允许。我只需添加class="disabled"
,这样就可以让我有更多的权力来设置已禁用的元素状态,例如,将其变灰。
哦,还有jQuery。当然,这个逻辑可以在“普通”的javascript中重现,但在库使用方面更加整洁,fiddle:
$('#my-button').click(function() {
var $this = $(this); //cache the reference
if (!$this.hasClass('disabled')) {
$this.addClass('disabled');
alert('hello world!');
setTimeout(function($btn) {
$btn.removeClass('disabled');
}, 5000, $this);
} else {
return false;
}
});