【发布时间】:2021-09-22 13:46:24
【问题描述】:
在这个 jsfiddle 中,如果您尝试在输入字段中输入一些数字,则尝试“ctrl+A”并删除您输入的内容,或者尝试使用“del”(删除)按钮,预期不会发生删除内容的行为。关于为什么的任何想法?我觉得我需要告诉 replace() 方法中的正则表达式值不要包含“ctrl”(或 Mac 上的命令)或“del”,但我不确定如何实现。
jsfiddle:http://jsfiddle.net/eujzh10n/2/
<div id="u22" class="ax_text_field">
<input id="u22_input" class="ssn" type="text" value="" data-label="ssn1" maxlength="11"/>
</div>
// SSN validation
// trap keypress - only allow numbers
$('input.ssn').on('keypress', function(event){
// trap keypress
var character = String.fromCharCode(event.which);
if(!isInteger(character)){
return false;
}
});
// checks that an input string is an integer, with an optional +/- sign character
function isInteger (s) {
if(s === '-') return true;
var isInteger_re = /^\s*(\+|-)?\d+\s*$/;
return String(s).search (isInteger_re) != -1
}
// format SSN
$('input.ssn').on('keyup', function(){
var val = this.value.replace(/\D/g, '');
var newVal = '';
if(val.length > 4) {
this.value = val;
}
if((val.length > 3) && (val.length < 6)) {
newVal += val.substr(0, 3) + '-';
val = val.substr(3);
}
if (val.length > 5) {
newVal += val.substr(0, 3) + '-';
newVal += val.substr(3, 2) + '-';
val = val.substr(5);
}
newVal += val;
this.value = newVal;
});
【问题讨论】:
-
hmm - 当我注释掉除“//format SSN”部分之外的所有内容时,我会遇到相同的行为。会不会是别的?
-
是的 - 这是另一回事。这是因为您将输入替换为 newVal,这会清除用户所做的任何选择。
标签: javascript regex validation input