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