2011-02-18 53 views
1

这里有值的文本框是我到目前为止的代码灌装在从复选框

<head> 

    <script type="text/javascript"> 

    function list(c,n,z) { 
    s=document.form.marktext.value; 
    if (c.checked) { 
    if (s.indexOf(n)<0) s+=', '+n; 
    } else { 
    s=document.form.marktext.value.replace(', '+n,''); 
} 
    z=", "; 
    if (s.substring(2) == z) s=s.substring(2); 
    document.form.marktext.value=s;} 



    function getchecked() { 
     var newtxt = ''; 
     var chkbx = document.getElementsByTagName('input'); 

     for(var i = 0; i < chkbx.length; i ++) 
     { 
      if(chkbx[i].type == 'checkbox' && chkbx[i].checked === true) { 
      if(newtxt.length !== 0) { 
      newtxt += ','; 
      } 
      newtxt += chkbx.innerHTML; 
     } 

    } 

    document.form.marktext.value = newtxt; 

    } 

    </script> 

    </head> 


    <body> 
    <form name="form"> 
    <input type="text" value="" name="marktext"><br> 
    <input type="checkbox" name="mark" value="word" onclick="getchecked()">Word<br> 
    <input type="checkbox" name="mark" onclick="getchecked()">Type<br> 
<input type="checkbox" name="mark" onclick="getchecked()">Other<br> 
    </form> 


    </body> 

它几乎作品,但是当我点击复选框,我得到在文本框中的“不确定”的标签,而不是复选框值。我猜这是一个小而笨的东西,但我似乎无法弄清楚。

回答

0

通知该指数上newtxt += chkbx[i].value;而不是newtxt += chkbx.innerHTML;

<head> 

    <script type="text/javascript"> 

    function list(c,n,z) { 
    s=document.form.marktext.value; 
    if (c.checked) { 
    if (s.indexOf(n)<0) s+=', '+n; 
    } else { 
    s=document.form.marktext.value.replace(', '+n,''); 
} 
    z=", "; 
    if (s.substring(2) == z) s=s.substring(2); 
    document.form.marktext.value=s;} 



    function getchecked() { 

     var newtxt = ''; 
     var chkbx = document.getElementsByTagName('input'); 

     for(var i = 0; i < chkbx.length; i ++) 
    { 
     if(chkbx[i].type == 'checkbox' && chkbx[i].checked === true) { 
     if(newtxt.length !== 0) { 
     newtxt += ','; 
     } 
     newtxt += chkbx[i].value; 
    } 

    } 

    document.form.marktext.value = newtxt; 

    } 

    </script> 

    </head> 


    <body> 
    <form name="form"> 
    <input type="text" value="" name="marktext"><br> 

    <input type="checkbox" name="mark" value="word" onclick="getchecked()">Word<br> 
    <input type="checkbox" name="mark" onclick="getchecked()" value="type">Type<br> 
    <input type="checkbox" name="mark" onclick="getchecked()" value="other">Other<br> 

    </form> 


    </body> 

但我建议使用jQuery或任何其他JavaScript库!

+0

谢谢 - 这些答案对我有帮助。我想我现在已经开始工作了。 – TDO 2011-02-18 09:37:46

0

改变这一行

newtxt += chkbx.innerHTML; 

newtxt += chkbx[i].nextSibling.data; 

<input>没有一个innerHTML的,但它有一个兄弟 - 它旁边的文本节点。你可能想要显示这个文本节点的“内容”。 (注意:你的输出是“undefined”,因为你在阵列上调用了innerHTML而不是在<input>节点上)