0

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 的按钮(第一个)对话,但只要我能让它为一个按钮工作,我就可以完成其余的工作。那么,我做错了什么?

4

3 回答 3

1

每个按钮都有一个onclick 事件处理程序。为了防止 onclick 处理程序执行任何操作,附加到处理程序的 JavaScript 方法应返回false. 如果您使用 jQuery 执行此操作,return false;则与调用e.preventDefaultevent.preventDefault用于 IE)相同。

当普通事件处理程序启动与按钮关联的操作时,它应该添加禁用 onclick 操作的事件处理程序。

您可能还需要对按钮应用新的 CSS 样式,以便用户知道它已被禁用。

操作完成后,您需要删除禁用 onclick 操作的事件处理程序并再次使用正常操作。

您总是可以只使用一个标志来表示一个动作正在进行中,并通过这些动作打开和关闭它。如果标志打开,则事件处理程序方法返回 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';
}
于 2012-05-23T04:13:11.547 回答
0

您可以“禁用”单击处理程序中的元素,并在成功执行回调时重新启用它。

不能保证单击处理程序绑定到具有disabled="disabled"属性的元素在浏览器中始终如一地实现(即事件可能/仍会触发),并且无论如何都不允许在表单元素上除外。我只想添加class="disabled"它,它赋予我额外的权力来设置禁用元素状态的样式,例如,将其变灰。

哦,还有 jQuery。自然地,这个逻辑可以在“普通”javascript中重现,但在库的使用上更加整洁,小提琴

$('#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;
    }
});
于 2012-05-23T05:21:56.390 回答
0

document.getElementById("my_button").disabled = true;

当你完成时。

document.getElementById("my_button").disabled = false;

于 2012-05-23T04:06:02.057 回答