Заполнение текстового поля значениями из флажков - PullRequest
1 голос
/ 18 февраля 2011

Вот код, который у меня есть до сих пор

  <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>

Это почти работает, но когда я нажимаю флажок, я получаю метку 'undefined' в текстовом поле вместо значения флажка.Я предполагаю, что это что-то маленькое и глупое, но я не могу понять это.

Ответы [ 3 ]

0 голосов
/ 18 февраля 2011

Обратите внимание на индекс на 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 голосов
/ 18 февраля 2011

Измените эту строку

newtxt += chkbx.innerHTML;

на

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

<input> не имеет innerHTML, но у него есть родственный элемент - текстовый узел рядом с ним.И вы, вероятно, хотите отобразить «содержимое» этого текстового узла.(Примечание: ваш вывод был «неопределен», потому что вы вызвали innerHTML для массива, а не для узла <input>)

0 голосов
/ 18 февраля 2011

propoerty innerHtml не применяется для сбора меток Textboxes.Кроме того, как вы его закодировали, это не ярлыки.

Посмотрите на эту ссылку, я думаю, ваше решение находится внутри: http://www.webdevelopersnotes.com/tips/html/finding_the_value_of_a_checkbox.php3

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...