簡體   English   中英

preventDefault()不適用於change事件

[英]preventDefault() not working for change event

任何想法為什么preventDefault不起作用? 這是下面的代碼。 TKS!

<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">

    $(document).ready(function() {
        $("#text1").change(function(e) {
             e.preventDefault();
        });
    });

function myFunc() {
    alert("Random, annoying alert");
}

</script>
</head>

表單中只有一個HTML元素:

<body>
<form name="test" method="post">
    <input name="text1" id="text1" type="text" onchange="myFunc();">
</form>
</body>

您不能對更改事件使用preventDefault ,因為它不可取消:

$("#text1").change(function(e) {
    alert(e.cancelable?"Is cancelable":"Not cancelable");
});

僅當可以阻止的事件時, cancelable屬性才為真。

preventDefault()用於防止元素的默認行為,默認行為被烘焙到您的瀏覽器中。

例如,單擊時錨標記的行為是啟動一系列事件,這些事件將修改網址欄並發送http請求(我知道過於簡單化的解釋)。

通過在單擊事件中使用evt.preventDefault(evt)您可以停止默認行為,以便在執行操作之前可以執行其他操作,或者將它們全部忽略。

我可以用你的例子看到的問題是onchange的默認行為是取消選擇輸入框,取消它的亮度並且我不確定它被歸類為事件(我很確定它不是)。 不是因為它能夠阻止你附加onchange() 事實上,如果你使用的是preventDefault()myFunc()就是它應該的位置。

對於要防止的事件,必須有結果輸出,而不是修改外觀。 例如,單擊標簽,提交表單,滾動容器。

暫無
暫無

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

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