我使用這個腳本只允許我輸入文本字母和數字
function setInputFilter(textbox, inputFilter) {
["input", "keydown", "keyup", "mousedown", "mouseup", "select", "contextmenu", "drop"].forEach(function(event) {
textbox.addEventListener(event, function() {
if (inputFilter(this.value)) {
this.oldValue = this.value;
this.oldSelectionStart = this.selectionStart;
this.oldSelectionEnd = this.selectionEnd;
console.log("If 1");
} else if (this.hasOwnProperty("oldValue")) {
this.value = this.oldValue;
this.setSelectionRange(this.oldSelectionStart, this.oldSelectionEnd);
console.log("if 2");
} else {
console.log("if 3");
this.value = "";
}
});
});
}
setInputFilter(document.getElementById("frm_nuevo_proveedor:j_idt35"), function(value) {
return /^[^\W_] $/i.test(value);
});
我的問題是,一旦我輸入第一個值,它就不會再讓我擦除它

所以第一個值不會讓我洗掉它。
uj5u.com熱心網友回復:
當您嘗試洗掉最后一個字符時,RegExp 將回傳 false,因為它未設定為接受空白字串。這會導致腳本恢復oldValue,這將是單個字母。
最簡單的修復似乎是更新用作過濾器的 RegExp。這應該對你有用,雖然我不是正則運算式的專家,所以可能有更好的方法:
setInputFilter(document.getElementById("testEl"), function(value) {
return /(^$|^[^\W_] $)/i.test(value);
});
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/364981.html
標籤:javascript
下一篇:為什么控制臺日志顯示已定義的變數
