【发布时间】:2021-04-29 04:23:56
【问题描述】:
我想问一些关于 jQuery 中的 preventDefault() 的问题:我的问题是当我在一个条件中使用 preventDefault() 时,该方法在检查我的条件是否为真之前正在运行,有人知道问题是什么吗?
我已经尽一切努力让我的preventDefault() 在我的条件为真时正常工作,但现实情况并非如此正确。
这是我的示例代码,让大家更详细地了解我的问题,希望大家能帮助我解决我的问题,谢谢。
$("input[name='test']").on({
keydown: function(event) {
const selector = event.which;
if (selector == 69) {
event.preventDefault();
} else if (selector == 8) {
const inputVal = $(this).val();
const subsVal = inputVal.substr(0, (inputVal.length - 1));
if (subsVal == '' || subsVal.length == 0) {
console.log("stop it, it's already empty");
event.preventDefault(); // => when I use this method is not working perfect, because when the input text length is not zero yet, the method is running then I can't delete it until the input value is empty or zero length
}
}
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="number" name="test" value="1">
【问题讨论】:
-
你可以将事件处理程序改为监听
keyup而不是keydown,让用户先删除文本,然后触发错误 -
感谢您的回答,但是当我使用
keyup时,preventDefault()不起作用,所以为什么我选择keydown而不是keyup -
您想阻止用户删除最后一个字符吗?然后它在 sn-p 中按我的预期工作。
-
不,先生,我的意思是当我的输入值为空或我的输入中没有显示时,该方法将运行,例如当输入值具有最后一个字符时,可以再次删除该值,但是当我的值中没有任何字符时,我不能再使用退格了,先生
-
您的代码清楚地表明:检查是否还有 one 字符,然后取消退格 -
inputVal.substr(0, (inputVal.length - 1))只需删除 substr 部分。如果它不是你想要的,为什么会在那里?
标签: javascript jquery preventdefault