2011-02-18 51 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>節點上)