簡體   English   中英

如何禁用鼠標左鍵單擊?

[英]How to disable mouse left click?

我想禁用鼠標左鍵單擊。 我使用以下腳本但不起作用。

<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>

幫我。 謝謝你的努力。

你錯了。 您想要禁用按鈕(enabled = false),而不是捕獲鼠標單擊。

使用該樣式的處理程序時,從處理程序代碼返回false

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

正如theatrus所說 ,但是,如果你的目標是禁用按鈕,那么最好實際禁用按鈕而不是阻止它的點擊。 但就你的問題“如何禁用左鍵單擊”而言,這就是答案。

更徹底的是,有兩種不同的方法來附加事件處理程序:

DOM0(您使用的樣式):從處理程序代碼返回false以停止事件(防止它冒泡到其他元素)並阻止默認操作:

<someElement onclick="return false;">

DOM2(使用JavaScript代碼):DOM2處理程序通過addEventListener (或IE上的attachEvent )附加。 這是一個例子,假設一個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;
    }
}

一些參考資料:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM