为什么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>
答案 0 :(得分:15)
您无法在更改事件中使用preventDefault
,因为它无法取消:
$("#text1").change(function(e) {
alert(e.cancelable?"Is cancelable":"Not cancelable");
});
cancelable
属性仅对可以阻止的事件为真。
答案 1 :(得分:1)
preventDefault()
用于防止元素的默认行为,默认行为将被烘焙到您的浏览器中。
例如,单击时锚标记的行为是启动一系列事件,这些事件将修改网址栏并发送http请求(我知道过于简单化的解释)。
通过在单击事件中使用evt.preventDefault(evt)
,您可以停止默认行为,以便在操作行为之前执行其他操作,或者一起忽略它。
我可以用你的例子看到的问题是onchange
的默认行为是取消选择输入框,取消它的亮度并且我不确定它被归类为事件(我很确定它不是' T)。不是因为它能够阻止您附加的功能onchange()
。事实上,如果您使用preventDefault()
,myFunc()
就是它应该的位置。
对于要防止的事件,必须有结果输出,而不是修改外观。例如单击标签,提交表单,滚动容器。