我正在对输入字段创建验证。其验证是";最小8个字符";以及";"仅包含字母和数字的组合";。
我已经制作了如下的剧本,但它仍然不是我想要的。目前,出现的错误是一个接一个的,而不是一次全部出现。
例如,如果我键入">";a12">它应该显示一个"strong>";最少8个字符"错误。并且如果我键入"strong";a12或";a12@">;最小8个字符"错误将消失并且仅显示"strong>";仅包含字母和数字的组合"错误。
错误应为8 character minimum, only contains a combination of letters and numbers
如何解决这个问题?
$("[name='testing']").on('keyup', function(){
const getValue = $(this).val();
const numbers = /^[A-Za-z0-9]*$/;
if(getValue.length < 8){
$('.error').html('<span class="min-char">8 character minimum</span>')
if(getValue.match(numbers)){
$('.error .combine-pass').remove()
}else{
$('.error').html('<span class="combine-pass">Combination of letters and numbers</span>')
}
}else{
$('.error .min-char').remove()
}
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" name="testing">
<div class="error"></div>
如果要检查输入文本是否包含特殊字符/s,请使用正则表达式:rg1 = /[^a-z0-9]/gi
。
如果您想检查输入文本是否正好包含8个字符(字母和数字(,请使用正则表达式:rg2 = /^[a-z0-9]{8}$/gi
使用这两个正则表达式,您可以清楚地验证您的输入,从而相应地验证输出。
if(rg1.test(txt)) return "only contains a combination of letters and numbers";
else if(!rg2.test(txt)) return "8 characters minimum";
不需要长度验证。如果输入的文本长度恰好为8,则rg2
返回true
,否则返回false
。
我使用正则表达式验证和javascript事件监听器来实现用例。
const element = document.getElementById("input");
element.addEventListener("input", validate);
function validate(e) {
let value = e.target.value
const regEx = /^[A-Za-z0-9]*$/
if (!regEx.test(value) && value.length < 8) {
document.getElementById("errorMsg").innerHTML = "8 character minimum, only contains a combination of letters and numbers";
} else if (!regEx.test(value)) {
document.getElementById("errorMsg").innerHTML = "only contains a combination of letters and numbers";
} else if (regEx.test(value)) {
if (value.length < 8) {
document.getElementById("errorMsg").innerHTML = "8 characters minimum";
return
}
document.getElementById("errorMsg").innerHTML = "";
}
}
<input type="text" id="input">
<div id="errorMsg"></div>
如果您觉得这个答案有用,请投赞成票