日期:2014-05-20  浏览次数:20713 次

js很简单的字符串过滤,在线跪求....
html代码如下:

HTML code

<input type="text" id="txtfid" runat="server"/>
<input id="cb1" class="check" type="checkbox" name="cb1" value="01" onclick="javascript:fucheckbox(this.id,this.value);"/>
<input id="cb2" class="check" type="checkbox" name="cb2" value="02" onclick="javascript:fucheckbox(this.id,this.value);"/>
<input id="cb3" class="check" type="checkbox" name="cb3" value="03" onclick="javascript:fucheckbox(this.id,this.value);"/>



javascript代码如下:

JScript code

<script type="text/javascript">
 function fucheckbox(_id,_value)
    {
        var txtfid=document.getElementById('txtfid');
        var _obj=document.getElementById(_id);
        if(_obj.checked==true)
        {
            txtfid.value=txtfid.value.replace(_value+',','');
            txtfid.value+=_value+',';
        }
        else
        {
            txtfid.value=txtfid.value.replace(_value+',','');
//问题在这里
//如果txtfid.value里面现有多个01,01,01,02,02,03,03,03,
//如果当前取消选中的是value='01'的复选框,哪么就将所txtfid.value里面所有01,都过滤掉.
//目前以上方法只能过滤掉一个,求解,谢谢了
        }
    }
    </script>



------解决方案--------------------
晕,写循环最简单了啊。。。
for(var i=0; i<你的数组.split(",").length;i++){
var endvalue = 你的数组[i].replace(_value+',','');
// 将endvalue相加啊。。。
endvalue+=endvalue+',';
}
------解决方案--------------------
不知道这样行不,你试试
JScript code

function fucheckbox(_id,_value)
    {
        var txtfid=document.getElementById('txtfid').value;
        var _obj=document.getElementById(_id);
        var tmp[] = txtfid.split(",");
        for(var i = 0; i < tmp.length; i++) {
            if(_obj.checked==true) {
                if(tmp[i] == _value) {
                    txtfid.value=txtfid.value.replace(_value+',','');
                    txtfid.value+=_value+',';
                }else {
                     txtfid.value=txtfid.value.replace(_value+',','');
                }
            }
        }