禁用<li> </li>中的按钮

时间:2012-05-23 03:52:01

标签: javascript

好吧,如果列表中有六个按钮,在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的按钮(第一个)对话,但只要我能使它适用于一个,我就可以完成其余的工作。那么,我做错了什么?

3 个答案:

答案 0 :(得分:1)

每个按钮都有一个onclick event handler。为防止onclick处理程序执行任何操作,附加到处理程序的JavaScript方法应返回false。如果您使用jQuery return false; is the same as calling e.preventDefaultor 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;
    }
});