如何禁用鼠标左键单击?

时间:2010-06-28 05:42:39

标签: javascript jsf cursor

我想禁用鼠标左键单击。我使用以下脚本但不起作用。

<h:form>
        <a4j:commandButton value="TestButton" onclick="alert('button cliked')"/>
</h:form>

JavaScript是:

<script type="text/javascript">
        document.captureEvents(Event.MOUSEDOWN | Event.MOUSEUP | Event.CLICK);
        document.onmousedown = clickIE4;
        document.onmouseup = clickIE4;
        document.onclick = clickIE4;

        function clickIE4()
        {
            return false; 
        }
</script>

帮帮我。 谢谢你的努力。

2 个答案:

答案 0 :(得分:6)

你这是错误的。您想要禁用按钮(启用= false),而不是捕获鼠标点击。

答案 1 :(得分:3)

使用该样式的处理程序时,从处理程序代码返回false

<a4j:commandButton value="TestButton" onclick="alert('button clicked'); return false;"/>

作为theatrus said,如果你的目标是禁用按钮,那么最好实际禁用该按钮,而不是阻止它的点击。但就你的问题“如何禁用左键单击”而言,这就是答案。

更彻底的是,有两种不同的方法来附加事件处理程序:

DOM0(您使用的样式):从处理程序代码返回false以停止事件(防止它冒泡到其他元素)并阻止默认操作:

<someElement onclick="return false;">

DOM2(使用JavaScript代码):DOM2处理程序通过addEventListener(或attachEvent在IE上附加)。这是一个例子,假设一个元素带有id“foo”:

// Attaching:
var elm = document.getElementById("foo");
if (elm.attachEvent) {
    elm.attachEvent("onclick", handler);
}
else if (elm.addEventListener) {
    elm.addEventListener("click", handler, false);
}

// Handler:
function handler(event) {
    // DOM standard is that `event` is an argument to the
    // handler; IE uses a global event object instead.
    // This line handles that.
    event = event || window.event;

    // Cancelling bubbling:
    if (event.stopPropagation) {
        // DOM standard
        event.stopPropagation();
    }
    else {
        // Older mechanism
        event.cancelBubble = true;
    }

    // Preventing default action:
    if (event.preventDefault) {
        // DOM standard
        event.preventDefault();
    }
    else {
        // Older mechanism
        event.returnValue = false;
    }
}

一些参考资料: