jQuery的.val()返回undefined。

6

下面是相关代码。当我点击提交按钮时,在弹出框中我得到的是undefined,而不是输入的电子邮件地址。我在这里犯了什么错误?

<form action="page2.php" method="post" onsubmit="myFunction()" id="form1"> 
        ......
        <input type="text" name="YourEMail" style="width: 250px;"> 
        <input type="submit" name="submit" value="Submit"> <br>
        ......
</form> 

<script>
$('#form1').submit(function() {
    //your validation rules here
    var email = $('#YourEMail').val()
    alert(email)
    //if(email.length == 0)
        return false;
    //else 
    //  return true;
});
</script>
3个回答

14

YourEMail 是名称(name),而不是 ID(id):

var email = $('input[name=YourEMail]').val();

或者将 inputid 更改为:

<input type="text" id="YourEMail" name="YourEMail" style="width: 250px;"> 

你比我快一步了。:) - Daan
1
or add to the tag <input type="text" *id="YourEMail"* name="YourEMail" style="width: 250px;"> - Paul Swetz
太棒了。我不知道它那么容易 :)! - pythonic

2

请查看这个可用的fiddle https://jsfiddle.net/3h4n6qfe/1/

你正在调用一个id,但是jQuery返回null,因为你的输入字段没有id

修改为:

<input type="text" name="YourEMail" style="width: 250px;"> 

To:

<input type="text" name="YourEMail" id="YourEMail" value="My Email" style="width: 250px;">

接下来就可以开始使用了!


1
使用 Stack Overflow 的代码模拟器,而不是 jsfiddle。 - Black
@EdwardBlack,这里很多人都使用jsfiddle,这没有问题。他可以按照自己的喜好去做... - eisbehr
1
如果 jsfiddle 宕机了,我们该怎么办?为什么要使用外部代码模拟器,而 Stack Overflow 已经有自己的代码编辑器了呢? - Black
这可能有不同的原因。我个人更喜欢 jsfiddle,因为你有更多的代码空间,可以轻松地进行测试/更改,具有完整的 htmlcssjs 分割以及像 ajaxlibraries 这样的东西。对于小事情,你可以使用 SO 的解决方案,但对于更大的事情,我总是更喜欢 jsfiddle...而且:没有规定必须使用内联版本!所以,每个人都可以按照自己的意愿去做。 :) @EdwardBlack - eisbehr

0

在我的情况下,是因为不同的元素类型具有相同的ID。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接