2016-03-08 165 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>

的问题是,萤火显示form.formName为空,因为是表单值的其余部分。他们为什么没有获得这些元素?

该脚本的最终目的是验证表单数据。我认为如果元素将加载,表单的其余部分将会起作用。

+0

哪里是你的JavaScript就你的HTML片段? –

+2

确保您的脚本在DOM准备就绪后执行... – Rayon

+1

您没有任何ID为“contactus”的元素。 –

回答

2

因为您试图通过ID获取元素,而没有ID。

添加ID到表单标签应该解决的问题:

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

但是,你可能更喜欢,因为你根本不被使用的ID你的方法改变document.getElementsByName("theName")

在这里你去:http://www.w3schools.com/jsref/met_doc_getelementsbyname.asp

+0

名称字段不作为ID吗?也许是一个愚蠢的问题,但我正在学习,所以请裸露在我身边。 –

+0

'ID'用作上下文中的对象名称,'name'用于提交值 –

+0

Nop!名称和Id是两个完全不同的东西 –

0

您的形式有联系我们,但你想通过ID得到它。

而且,似乎是名字输入了一个错误:

<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> 
相关问题