2013-07-23 2 views
2

Я хочу проверить, содержит ли текстовое поле имя или нет. Если нет, то после нажатия кнопки отправки появляется сообщение о предупреждении, и страница не должна отправлять пустое значение. Если он содержит значение, значение должно быть представлено.Как проверить, пусто ли текстовое поле или нет?

Я использую приведенный ниже код. Когда я оставляю текстовое поле пустым и нажимаю кнопку отправки, оно отображает предупреждение, как ожидалось, но оно также отправляет пустое значение после отклонения предупреждения.

<html> 
    <head> 
     <script type="text/javascript"> 

      function check() 
      { 
       if (!frm1.FileName.value) 
       { 
        alert ("Please Enter a File Name"); 
        return (false); 
       } 
       return (true); 
      } 

     </script> 
    </head> 
    <body> 
     <form name="frm1" id="frm1" action="/cgi-bin/page.pl" method="POST"> 
      <input type="text" name="FileName" id="FileName">  
      <input type="submit" value="send" name="btn_move" id="btn_move" onclick="check()"> 
     </form> 
    </body> 
</html> 

В чем проблема с кодом?

+1

Возможный дубликат [Проверка наличия текстового поля в Javascript] (http://stackoverflow.com/questions/14659098/checking-if-a-textbox-is-empty-in-javascript) –

ответ

7

Вам нужно сделать onclick="return check();"

+0

. .. Я реализовал это мышление, это все, что нужно, не глядя на вопрос. Конечно, это не сработает. Мне нужно определить, что означает 'check' – Dennis

4

Попробуйте

<html> 
    <head> 
     <script type="text/javascript"> 

      function check() 
      { 
       if (document.getElementById('FileName').value=="" 
       || document.getElementById('FileName').value==undefined) 
       { 
        alert ("Please Enter a File Name"); 
        return false; 
       } 
       return true; 
      } 

     </script> 
    </head> 
    <body> 
     <form name="frm1" id="frm1" action="/cgi-bin/page.pl" method="POST"> 
      <input type="text" name="FileName" id="FileName">  
      <input type="submit" value="send" name="btn_move" id="btn_move" onclick="return check();"> 
     </form> 
    </body> 
</html> 
+0

В чем разница? –

+0

Не нужно возвращать (ложную) скобу. – Amit

+0

Но это не было причиной проблемы. –

1

Вы возвращаетесь false из check, но вы не возврата значения из обработчика событий .

Только если обработчик события возвращает false, действие по умолчанию (представление формы в данном случае) предотвращается:

onclick="return check();" 

Посмотрите на большой introduction to event handlers at quirksmode.org, чтобы изучить основы о обработки событий (и узнайте о лучших способах, чем обработчики событий inline).


В целом лучше выполнить эти проверки не тогда, когда нажата кнопка отправки, но перед отправкой формы. Таким образом, вместо привязки обработчика к щелчка события на кнопке, привязать его к представить события формы, например (с использованием традиционных обработчиков событий):

document.getElementById('frm1').onsubmit = function() { 
    if (!this.FileName.value) { 
     alert ("Please Enter a File Name"); 
     return false; 
    } 
}; 

Преимущество заключается в том, что проверка будет сделана для всех представлений форм, а не только при нажатии кнопки отправки (например, если кнопка отправки «выполнена», нажав клавишу ввода).

Смежные вопросы