2013-06-02 3 views
0

Я написал код проверки для формы, которая идет:JavaScript Поле ввода Validation

function checkWholeForm(theForm) { 
    // Create validation variables 
    var valid = true; 
    var validationMessage = "Please correct the following errors: \r\n"; 

    // Validate name 
    if (document.getElementById('name').value.length == 0) 
     { 
      validationMessage = validationMessage + ' - Name is missing\r\n'; 
      valid = false; 
     } 

//(and there's a few other functions) 

// Display alert box with errors if any errors found 
    if (valid == false) 
     { 
      alert(validationMessage); 
     } 

     return valid; 

    } 

, а затем на странице HTML, он идет:

<form action="submit.php" method="post" enctype="text/plain" onsubmit="return checkWholeForm(this)"> 

и в таблице:

<input type="text" id="name" name="name" size="20" value="" /> 

Но когда я попал в submit, пустое текстовое поле не вызывает предупреждение. Что я делаю не так?

Редактировать: http://jsbin.com/uvepin/2/edit для полного HTML и JS.

+0

'ValidationMessage = ValidationMessage +«- имя отсутствует \ г \ п»; 'должны иметь двойные кавычки, если вы хотите добавить '\ r' или' \ n'. Это не причина, по которой ваш скрипт не работает. Пожалуйста, используйте pastebin или вставьте полный скрипт здесь. – Kumar

+0

@ Kumar - см. Править. –

+0

@AC validationMessage не определен, переименуйте его в validMess или определите его. – arma

ответ

1

ОК, многие вопросами, вы используете getElementById, но ваш идентификатор не установлен для почтового ящика, а также делать вид проверку, изменения от типа = отправить ввести = кнопку и использовать OnClick вместо onsubmit

мой отредактированный вариант: http://jsbin.com/ujeval/1/

+0

Вам нужно 'return', чтобы предотвратить отправку отправки, когда проверка не удалась. – nnnnnn

+0

@ box86rowh - это сработало. Спасибо за вашу помощь! –

+0

Эта обновленная демо не работает - форма будет _never_ submit, потому что вы всегда возвращаете false из 'onsubmit'. – nnnnnn

0

Если вы откроете консоль браузера (F12 в Chrome и IE, Ctrl-Shift-K в FF), вы увидите, что ваш код дает эту ошибку:

Uncaught ReferenceError: validationMessage is not defined 

... потому что вы объявили переменная как validMess. Затем в обновлении вопроса вы переименовали его в validMessage. Но все же ваш другой код относится к validationMessage.

// WRONG: 
var validMessage = "Please correct the following errors: \r\n"; 

// RIGHT: 
var validationMessage = "Please correct the following errors: \r\n"; 

Демо: http://jsfiddle.net/JH8hg/

UPDATE пойти с вашего последнего обновления:

В вашем jsbin.com демо, вы попытались добавить onsubmit обработчик кнопки:

<input class="button" name="send" type="submit" value="Send!" onsubmit="return checkWholeForm(this)" /> 

... но кнопки не имеют события onsubmit, поэтому это должно быть добавлено к элемент формы:

<form action="mailto:[email protected]" method="post" enctype="text/plain" 
     onsubmit="return checkWholeForm(this)"> 

И что элемент формы не имеет закрывающий тег </form>.

И вы забыли указать id="email" на свое поле электронной почты, что означает, что вы получили ошибку JS при попытке использовать document.getElementById('email').value.length.

Работа демы с теми вещами исправлено:http://jsbin.com/ukepuh/1/edit

+0

Исправлено, @nnnnnn. Обновленный код находится в ссылке JSBin. –

+0

Хорошо, ответьте обновлен, чтобы осветить проблемы в вашей демонстрации. (Различные проблемы с тем, что у вас был код в вашем вопросе.) – nnnnnn

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