日期:2014-05-16  浏览次数:20373 次

如何检测值重复
JScript code

function $(v){return document.getElementById(v);}
function gInput(a,b){
    var t="";
    l=document.getElementsByName(a);
                for(i=0;i<l.length;i++)  
                {  
                    if(l[i].value)  
                    { t+=l[i].value+"|"         
                     }                                                                  
                }
    if(t){$(b).value="|"+t;}
}



HTML code

<input name="tmpInput" id="position1" type="text" onblur="gInput('tmpInput','position')" />
<input name="tmpInput" id="position2" type="text" onblur="gInput('tmpInput','position')" />
<input name="tmpInput" id="position3" type="text" onblur="gInput('tmpInput','position')" />
<input name=position id="position" type="text" />



这样能将用户输入的值加到一起,并用“|”隔开,方便下一步用php explode。但是用户经常输入重复的值,比如三个框都输入“厨师”,数据库最后的值为“|厨师|厨师|厨师|”
如何能巧妙地加个检测,将重复的值去除?

------解决方案--------------------

试看。。。
JScript code

function $(v){return document.getElementById(v);}
var t='';
function gInput(a,b){
    var temp="";
    l=document.getElementsByName(a);
    for(i=0;i<l.length;i++){  
        temp=l[i].value.replace(/^\s*|\s*$/g,'');
        if(temp.length>0 && t.indexOf(temp)<0){ 
        t+=temp+"|";         
        }                                                                  
    }
    if(t.length>0){$(b).value="|"+t;}
}

------解决方案--------------------
function gInput(tmpInput,position){
var allobjs = $("[name='"+tmpInput+"']");
var valusarray = [];
for(var i=0;i<allobjs.length;i++){
if($.inArray(allobjs.eq(i).val(),valuesarray){
alert("包含相同的字段,此时程序可以结束或返回false");
}else{
valuearray.push(allobjs.eq(i).val());
}
}
alert("所有name为"+tmpInput+"的文本框内容没有重复的值,此时程序结束,可以返回true或其它的操作");
}


上面的这个代码针对你的问题缩写,只要放在onblur里面就行。就是不管你有多少的文本框,他都会从头到尾一个一个的去比较,当遇到相同的,往下就不会去比较,直接弹出来提示“包含相同的字段,此时程序可以结束或返回false”。而当所有的文本框内容全部循环完毕都没有发现一样的值,那就是所有文本框的值都不一样。
可能上述的代码里面包含jQuery1.6的内容。如果需要详细的帮助文档(CHM格式),请移步到 http://download.csdn.net/detail/chenjianhuacool/4019542 下载