Jq的input监听事件很频繁,但是大多数情况在输入中文时我们只要按下空格之后的中文,而并不需要在输入中文过程中产生的拼音字母,这时就需要做一些校验了。事件监听的回调中event变量里面其实什么都有,因此根据这个变量的值做了以下校验,实际生产中需要的校验:
// 校验输入是否需要发请求
function validateInput(event) {
var currentInput = event.originalEvent.data;
// 如果输入为空值(包括空格)返回false
// insertCompositionText是输入法为中文输入模式
if (event.originalEvent.inputType == 'insertCompositionText') {
// 如果输入的是汉字或者希腊字母,则返回true
if (currentInput && currentInput.match(/[\u4e00-\u9fa5]+|[\u0370-\u03ff]+/)) {
return true;
}
return false;
}
// insertText是输入法为英文输入模式
if (event.originalEvent.inputType == 'insertText') {
// 如果输入的是逗号或者空格等分词符号,说明用户不是在输入要校验的字符,不用发请求,返回false
if (currentInput && !currentInput.match(/,+|,+|\s+/)) return true;
return false;
}
// insertFromPaste是粘贴&