有文本区域我们输入分号分隔值,能够处理键盘事件并成功验证。如何在复制粘贴上验证相同。
$(function () {
var kpi = document.getElementById('<%=this.d.ClientID%>').value;
var tb = $('#<%= TextBox.ClientID %>');
$(tb).keypress(function (e) {
var regex = new RegExp("[0-9;]+$");
var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
if (regex.test(str) && !($(this).val().match(/;{2,}/))) {
var as = $(this).val().match(/;/ig) || [];
var len = as.length;
if (len < kpi) {
return true;
}
}
e.preventDefault();
return false;
});
$(tb).keyup(function (e) {
var str = String.fromCharCode(!e.charCode ? e.which : e.charCode);
if (($(this).val().match(/[;]{2,}/g))) {
var shortenedString = $(this).val().substr(0, ($(this).val().length - 1));
$(this).val(shortenedString);
return true;
}
e.preventDefault();
return false;
});
$(tb).on('paste input propertychange', function (e) {
//Validate interger with ; on paste and rest not allowed
})
});
答案 0 :(得分:0)
您可以尝试使用keyup事件对输入进行后验证。在此之前,textarea中的粘贴值不可用,例如在按键时。您可以通过检查确定它是否为粘贴,例如:
event.ctrlKey
答案 1 :(得分:0)
您可以使用keyup事件,替代尝试您的实现可以是这样的:
$(tb).live('keyup', function (e) {
this.value = this.value.replace(/[;]{2,}/g, "");
}
});
这将在粘贴到textarea时将输入的值替换为分号。