我只能复制东西进去,比如说1a 2c 3g 4b,我们有固定的字母,但是我复制进去之后,会出现多个重复的弹框,我怎么才能让重复提示的弹框只出现一次?比如说数字有4个,他就给我弹出4次。但是我这边只想让它弹出一次。各位大佬在我的源代码上面可以修改吗?
<input type="text" id="airportCode"/>
<script>
var inputObj=document.getElementById('airportCode')
inputObj.oninput=function(ev){
var arr= ev.target.value.split('');
var a=arr.filter(function(value,index){
//字母
var regx_zm = /^[acgtACGT]*$/;
//空格
var regx_kg = /^\s$/;
//特殊字符
var regx_tszf = new RegExp("[`~!@#$^&*()=|{}':;',\\[\\].<>/?~!@#¥……&*()——|{}【】‘;:”“'。,、?]");
//数字
var regx_sz = /^[0-9]*$/;
//其他字母
var regx_qtzm = /^[bdefh-su-zBDEFH-SU-Z]*$/;
if(regx_zm.test(value)){
return value;
}else if(regx_kg.test(value)){
alert('不能输入空格')
}else if(regx_tszf.test(value)){
alert('不能输入特殊字符')
}else if(regx_sz.test(value)){
alert('不能输入数字')
}else if(regx_qtzm.test(value)){
alert('请检查输入字母')
}else{
alert('其他')
}
})
inputObj.value=a.join('')
}
</script>
https://www.cnblogs.com/lqss/p/5856963.html
最简单的,每个状态加个标识就行。比如数字的弹窗,多加一个判断条件 numAlert
例:
var str = "asd111asd";
arr=str.split('');
numAlert=1;
arr.filter(function(item,index){
if(numAlert && item=="1"){
alert(1);
numAlert=0;
}
})
判断的时候,当第一次判断到item为数字的时候,此时numAlert为1==true,此时会执行下面alert操作,同时改变numAlert标识为0==false。当后面循环到此处时,由于numalert为false,则自动跳过后面的操作。