<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" > 
<head runat="server"> 
    <title>无标题页 </title> 
</head> 
<script type="text/javascript" language="javascript"> 
var currentCount=0; 
function set1(obj,maxi,demo) 

if (obj=="clear"){document.getElementById(demo).value="";return;};
    currentCount++; 
    if(currentCount >= maxi) 
    {alert("最多只能选择"+(maxi-1)+"个");return;} 
    document.getElementById(demo).value=document.getElementById(demo).value+obj+" "; 

</script> 
<body> 
<form id="form1" > 
 
        <input type="text" value=""  name="test" id="test"/>
        <input type="text" value=""  name="test2" id="test2"/>
  &nbsp;&nbsp;&nbsp;
      <select name="select" id="select" onchange="set1(this.options[this.selectedIndex].value,3,'test')">
        <option value="">专业领域2</option>
        <option value="123">123</option>
        <option value="234">234</option>
        <option value="456">456</option>
        <option value="789">789</option>
        <option value="clear">清空重选</option>
  </select>
  <select name="select2" id="select2" onchange="set1(this.options[this.selectedIndex].value,4,'test2')">
        <option value="">专业领域3</option>
        <option value="123">123</option>
        <option value="234">234</option>
        <option value="456">456</option>
        <option value="789">789</option>
        <option value="aaa">aaa</option>
        <option value="clear">清空重选</option>
  </select>
</form> 
</body> 
</html> 如果页面上只有一个 列表框,运行不会有问题,如果页面上有俩个 俩表框,运行就会 交叉 出错求助使得 选择列表框1 值进入文本框1 最多2个
选项列表框2 值进入文本框2  最多3个 正常运行
还有我点击 清空重选后 为什么计数器不能清空为0

解决方案 »

  1.   

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml" > 
    <head runat="server"> 
        <title>无标题页 </title> 
    </head> 
    <script type="text/javascript" language="javascript"> 
    var test = 0;
    var test2 = 0;
     function set1(obj,maxi,demo) 

        if (obj=="clear"){
         document.getElementById(demo).value="";
         eval(demo +="= 0;")
         return;
        };
        eval(demo + "++");
        if(eval(demo) >= maxi) {alert("最多只能选择"+(maxi-1)+"个");return;} 
        document.getElementById(demo).value += obj + " "; 

    </script> 
    <body> 
    <form id="form1" > 
     
            <input type="text" value=""  name="test" id="test"/>
            <input type="text" value=""  name="test2" id="test2"/>
      &nbsp;&nbsp;&nbsp;
          <select name="select" id="select" onchange="set1(this.options[this.selectedIndex].value,3,'test')">
            <option value="">专业领域2</option>
            <option value="123">123</option>
            <option value="234">234</option>
            <option value="456">456</option>
            <option value="789">789</option>
            <option value="clear">清空重选</option>
      </select>
      <select name="select2" id="select2" onchange="set1(this.options[this.selectedIndex].value,4,'test2')">
            <option value="">专业领域3</option>
            <option value="123">123</option>
            <option value="234">234</option>
            <option value="456">456</option>
            <option value="789">789</option>
            <option value="aaa">aaa</option>
            <option value="clear">清空重选</option>
      </select>
    </form> 
    </body> 
    </html> 
      

  2.   

    你功用一个计数标量肯定不行了<script type="text/javascript" language="javascript"> 
    var currentCount1 = 0; 
    var currentCount2 = 0
    function set1(obj,maxi,demo) 

    if (obj=="clear")
    {
    document.getElementById(demo).value="";
    if(demo == "test")
    currentCount1 = 0;
    else if(demo == "test2")
    currentCount2 = 0;
    return;
    }
    else
    {
    if(demo == "test")
    {
    currentCount1++;
    if(currentCount1 >= maxi) 
    {
    alert("最多只能选择"+(maxi-1)+"个");
    return;

    }
    else if(demo == "test2")
    {
    currentCount2++;
    if(currentCount2 >= maxi) 
    {
    alert("最多只能选择"+(maxi-1)+"个");
    return;

    }
    }
        document.getElementById(demo).value=document.getElementById(demo).value+obj+" "; 

    </script> 
      

  3.   

    二楼的方法是可以的,但是还有个问题
    即如果文本本身就已经有了值,此时就要做下判断,在决定是否可以添加值
    <script type="text/javascript" language="javascript"> 
    var user_6 = 0;
    var user_7 = 0;
     function helpset(obj,maxi,demo) 
    {     if (obj=="clear"){
            document.getElementById(demo).value="";
            eval(demo +="= 0;")
            return;
        };

    //ttt=document.getElementById(demo).value.split('/')[maxi-2]
    //if (ttt!=""){alert("你已经选择了"+(maxi-1)+"个");return;}

        eval(demo + "++");
        if(eval(demo) >= maxi) {alert("最多只能选择"+(maxi-1)+"个");return;} 
        document.getElementById(demo).value += obj + "/"; 

    </script>
    我想通过上面蓝色部分实现 但是好像不行啊,继续求助 分割符为/
    <input type="text" size="24" value="白下区/秦淮区/" id="user_6" name="user_6"/>
      

  4.   

    二楼的方法是可以的,但是还有个问题
    即如果文本本身就已经有了值,此时就要做下判断,在决定是否可以添加值
    <script type="text/javascript" language="javascript"> 
    var user_6 = 0;
    var user_7 = 0;
     function helpset(obj,maxi,demo) 
    {     if (obj=="clear"){
            document.getElementById(demo).value="";
            eval(demo +="= 0;")
            return;
        };

    //ttt=document.getElementById(demo).value.split('/')[maxi-2]
    //if (ttt!=""){alert("你已经选择了"+(maxi-1)+"个");return;}

        eval(demo + "++");
        if(eval(demo) >= maxi) {alert("最多只能选择"+(maxi-1)+"个");return;} 
        document.getElementById(demo).value += obj + "/"; 

    </script>
    我想通过上面蓝色部分实现 但是好像不行啊,继续求助 分割符为/
    <input type="text" size="24" value="白下区/秦淮区/" id="user_6" name="user_6"/>
      

  5.   

    二楼中
    eval(demo +="= 0;")和
    eval(demo + "++");
    是什么意思啊,我看不懂?
      

  6.   

    eval是动态编译.里面的字符串会被认为是JS运行.
    试试eval("alert('today is '+new Date())");