2016-03-08 5 views
0

У меня есть форма HTML, который выглядит следующим образом:Почему я получаю нулевое значение?

ar form={ 
 
    formName: document.getElementById("contactus"), 
 
    name: document.getElementById("name"), 
 
    email: document.getElementById("email"), 
 
    comment: document.getElementById("question") 
 
}; 
 

 
//form submit 
 
form.formName.addEventListener("submit", checkform);
<form name="contactus" method="post" action="html_form_send.php"> 
 
    <label for="name">Name:</label><br /><input <input type="text" name="name" maxlength="50" size="59" autofocus required/><br /><br /> 
 
    <label for="email">E-Mail Address:</label><br /><input type="email" name="email" maxlength="50" size="59" required/><br /><br /> 
 
    <label for="question">Question:</label><br /><textarea name="question" maxlength="1000" cols="50" rows="6" required></textarea><br /><br /> 
 
    <input class="c1_scButton" type="submit" value="send"/> 
 
</form> 
 

 
<script type="text/javascript" src="js/validate.js"></script>

Проблема заключается в том, что Firebug показывает, что form.formName имеет нулевое значение, как и все остальные значения формы. Почему они не приобретают элементы?

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

+0

Где ваши Фрагмент кода JavaScript в отношении вашего HTML? –

+2

Убедитесь, что ваш скрипт выполнен, когда DOM готов ... – Rayon

+1

У вас нет элементов с идентификатором 'contactus'. –

ответ

2

Потому что вы пытаетесь получить элемент по ID, когда в нем нет идентификатора.

Добавление идентификатора в виде тега должен решить проблему:

<form name="contactus" ID="contactus" method="post" action="html_form_send.php"> 

Но вы можете предпочесть изменить свой подход к document.getElementsByName("theName"), так как вы не используете идентификаторы вообще.

Здесь вы идете: http://www.w3schools.com/jsref/met_doc_getelementsbyname.asp

+0

ли поле имени не служит идентификатором? может быть, тупой вопрос, но я учусь так, пожалуйста, со мной. –

+0

'ID' используется как имя объекта в контексте, а' name' используется для отправки значения –

+0

Nop! Имя и идентификатор - две совершенно разные вещи. –

0

Ваша форма имеет имя ContactUS, но вы пытаетесь получить его идентификатор.

Кроме того, там, кажется, ошибка с вводом имени:

<input <input type="text" name="name" maxlength="50" size="59" autofocus required/> 

Вы, вероятно, хотите, чтобы удалить первый <input.

Наконец, если вы включите JavaScript в начало страницы, он может работать до полной загрузки страницы, а это значит, что форма и/или элементы ввода могут отсутствовать в DOM.

Чтобы исправить это, необходимо добавить прослушиватель событий, который будет запущен, когда DOM готов. Если вы используете JQuery, вы делаете это с:

$(document).ready(function(){ 
    //do stuff here 
}); 

Если у вас нет необходимости в JQuery, не включают в себя это только, чтобы сделать это. Дополнительную информацию о том, как это сделать, можно найти в ответах на вопрос this question.

0

Это будет работать точно ..

<form name="contactus" id='contactus' method="post" action="html_form_send.php"> 
      <label for="name">Name:</label><br /> 
      <input type="text" id='name' name="name" maxlength="50" size="59" autofocus required/><br /><br /> 
      <label for="email">E-Mail Address:</label><br /> 
      <input type="email" id='email' name="email" maxlength="50" size="59" required/> 
      <br /><br /> 
      <label for="question">Question:</label><br /> 
      <textarea name="question" id='question' maxlength="1000" cols="50" rows="6" required></textarea><br /><br /> 
     <input class="c1_scButton" type="submit" value="send"/> 
      </form> 
Смежные вопросы