preventDefault()不适用于change事件

Sli*_*Jim 11 javascript onchange preventdefault

任何想法为什么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>
Run Code Online (Sandbox Code Playgroud)

表单中只有一个HTML元素:

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

Fia*_*bre 18

您无法使用preventDefault更改事件,因为它不可取消:

$("#text1").change(function(e) {
    alert(e.cancelable?"Is cancelable":"Not cancelable");
});
Run Code Online (Sandbox Code Playgroud)

cancelable属性仅适用于可以阻止的事件.

  • 那怎么可以预防呢? (9认同)
  • @Triynko,您必须防止实际更改输入“值”的事件。‘change’表示“输入会话”的结束。它表明某事_已经_发生,而不是某事_正在发生_。当“change”被触发时,“value”已经被改变。如果您想拦截输入“值”的更改,则必须根据输入类型阻止“输入”或“单击”等。或者,您可以将输入的先前值存储在您自己的状态管理中,如果您不想保留更改,则可以在“更改”事件之后自行恢复该值。 (3认同)