我试过了,但我无法在粘贴上应用验证:
function blockSpecialCharacter(event) {
var regex = new RegExp("^[a-zA-Z0-9]+$");
var key = String.fromCharCode(!event.charCode ? event.which : event.charCode);
if (!regex.test(key)) {
event.preventDefault();
return false;
}
$('#businessId').bind('keypress ', function(e) {
blockSpecialCharacter(e);
});
请告诉我如何使用上述验证启用粘贴?
答案 0 :(得分:0)
您的代码无效的原因有几个:
keypress
事件event.charCode
所以,我建议你使用不同的事件处理程序,听取paste
事件并通过event.originalEvent.clipBoardData
这是一个阻止粘贴数据的工作示例,以防它包含至少一个特殊字符。
var regex = new RegExp("^[a-zA-Z0-9]+$");
function blockSpecialCharacter(event) {
var key = String.fromCharCode(!event.charCode ? event.which : event.charCode);
console.log(key);
if (!regex.test(key)) {
event.preventDefault();
return false;
}
}
function blockPaste(event) {
var pastedData = event.originalEvent.clipboardData.getData('text/plain');
if (!regex.test(pastedData)) {
console.warn("Pasted data contains some non allowed character");
event.preventDefault();
return false;
}
}
$('#businessId').bind('keypress', function(e) {
blockSpecialCharacter(e);
});
$('#businessId').bind('paste', function(e) {
blockPaste(e);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Paste data here : <br/>
<input type="text" name="businessId" id="businessId" value=""/>
<br/><br/>
Text ready to be copied : <br/>
<textarea rows="3" cols="40">
lorem
loreµ</textarea>
`