我有一个问题,我对TextBox进行了验证,以防止用户输入超过10个字符的数据,我已经在keyprees上应用了验证,但我无法限制用户粘贴数据的长度更多比10。 我已经搜索并尝试粘贴事件,但它没有工作,它不限制用户粘贴值,preventDefault();没有用。
代码 -
$('#EMName').bind('paste', function (e) {
var self = $(this);
var v = false;
var flag = setTimeout(function () {
var len = $(self).val().length;
if (len > 10) {
alert("false");
v = false;
return false
}
else {
alert("true");
v = true;
return true;
}
}, 0);
if (v == false)
e.preventDefault();
});
答案 0 :(得分:1)
这也是我们在应用程序中遇到的问题。这不仅仅是粘贴文本,它还有各种浏览器插件,可以为您预填字段或在浏览器中存储表单数据,不会触发任何事件。
我们能够克服这个问题的唯一方法是使用setInterval()定期检查,所以我们没有错过这些事件。
答案 1 :(得分:1)
好的,所以你实际上不会允许用户粘贴。如果你不这样做,那么
<input id="EMName" value="" onpaste="return false" maxlength="10" />
答案 2 :(得分:0)
基本上,您希望监视尽可能多的事件,以便允许更改该值的输入。我在我的一个网站上使用类似的东西,这就是我所做的:
$(document).ready(function(){
$('#target').on('propertychange keyup input paste', function(){
var target = $(this);
var text = target.val();
if (text.length > 10) {
target.val(text.substring(0, 9));
}
});
});
这适用于键入,ctrl + v,右键单击粘贴和大多数其他内容。我不确定如果浏览器插件填充它是否会起作用。