Функция проверки формы JS не работает - PullRequest
0 голосов
/ 09 июля 2010

У меня есть эта форма с функцией JS, чтобы проверить, что нет пустых полей, но она не работает.

<head>
  <script language='javascript'>
      function verifyForm(){
        var msg='';
        if(document.getElementById('field1').value==''){msg+='Field 1  \n';}
        if(document.getElementById('field2').value==''){msg+='Field 2  \n';}
        if(msg!=''){
            alert('The following entries are empty:\n\n'+msg);
            return false
        }else{
            return true }
        }
  </script>
</head>

<body>
   <form name="frmRequest2" id="frmRequest2" action="<? echo $submitURL2; ?>" method="post" onsubmit='return verifyForm();'>
   Please answer all questions and enter "NONE" where appropriate.

  <table>
    <tbody>
      <tr>
        <th>List any items you already have</th>
        <th>List any items you need to get</th>
      </tr>
      <tr>
        <td><textarea name="field1" id="field1" rows="2" cols="39"> <? echo $field1; ?> </textarea></td>
        <td><textarea name="field2" id="field2" rows="2" cols="39"> <? echo $field2; ?> </textarea></td>
      </tr>

      <tr>
        <td colspan="4" align="center" valign="top" style="border-width: 0px 0px 0px 0px;"> <br />
        <input name="submit" value="Submit Data" type="submit"/> </td>
      </tr>      
    </tbody>
  </table>
  </form>
</body>

Ответы [ 4 ]

4 голосов
/ 09 июля 2010

У вас есть дополнительные закрывающие фигурные скобки (}) после ваших предложений if.

Отредактировано для добавления: Следующий код работает должным образом и игнорирует любые пробелы в начале / конце в полях:

<html>

<head>
  <script language='javascript'>
      function verifyForm(){
        var msg='';
        if(document.getElementById('field1').value.replace(/\s+$|^\s+/, '') == '') {msg+='Field 1  \n';}
        if(document.getElementById('field2').value.replace(/\s+$|^\s+/, '') == '') {msg+='Field 2  \n';}
        if(msg!=''){
            alert('The following entries are empty:\n\n'+msg);
            return false;
        }else{
            return true;
        }
      }
  </script>
</head>

<body>
   <form name="frmRequest2" id="frmRequest2" action="" method="post" onsubmit='return verifyForm();'>
   Please answer all questions and enter "NONE" where appropriate.

   <table>
      <tbody>
      <tr>
        <th>List any items you already have</th>
        <th>List any items you need to get</th>
      </tr>
      <tr>
        <td><textarea name="field1" id="field1" rows="2" cols="39"></textarea></td>
        <td><textarea name="field2" id="field2" rows="2" cols="39"></textarea></td>
      </tr>

      <tr>
        <td colspan="4" align="center" valign="top" style="border-width: 0px 0px 0px 0px;">
          <input name="submit" value="Submit Data" type="submit"/>
        </td>
      </tr>
    </tbody>
  </table>

 </form>
</body>

</html>
1 голос
/ 09 июля 2010

У вас есть пробел на каждой стороне каждого вашего значения по умолчанию."" != " "

1 голос
/ 09 июля 2010

В закрывающем теге «[/ head]» отсутствует «>», тег «[form]» не закрывается.Это может вызвать проблемы.

0 голосов
/ 09 июля 2010

Как правило, я люблю обрезать входные поля. Меняет ли условие if на

document.getElementById('field1').value == '' to
document.getElementById('field1').value.trim() == ''

Помощь вообще?

Кроме того, чтобы повторить то, что предложил Дэвид, ваш исходный код выглядит так:

<textarea name="field1" id="field1" rows="2" cols="39"><? echo $field1; ?></textarea>

а не

<textarea name="field1" id="field1" rows="2" cols="39"> <? echo $field1; ?> </textarea>

Заметили пробелы?

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