【问题标题】:jquery .val() returns undefinedjquery .val() 返回未定义
【发布时间】:2016-12-01 13:34:05
【问题描述】:

代码的相关部分如下所示。当我单击警报框上的提交按钮时,我得到的是未定义的,而不是键入的电子邮件。我在这里犯了什么错误?

<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>

【问题讨论】:

    标签: javascript php jquery html forms


    【解决方案1】:

    YourEMailname,而不是id

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

    或将input 更改为id

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

    【讨论】:

    • 你刚刚打败了我。:)
    • 或添加到标签 id="YourEMail" name="YourEMail" style="width: 250px;">
    • 太棒了。我不知道这很容易:)!
    【解决方案2】:

    检查这个工作小提琴https://jsfiddle.net/3h4n6qfe/1/

    您正在调用 id,而 jQuery 将其返回为 null,因为您的输入字段没有 id

    修改自:

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

    收件人:

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

    你很高兴!

    【讨论】:

    • 使用堆栈溢出代码模拟器代替 jsfiddle
    • @EdwardBlack 这里很多人使用jsfiddle,没有问题。他可以做他喜欢的事......
    • 如果 jsfiddle 离线我们在做什么?如果 stackoverflow 有自己的,为什么还要使用外部代码模拟器?!
    • 这可能有不同的原因。我个人也更喜欢jsfiddle,因为你有更多的代码空间,你可以在那里轻松地进行测试/更改,完全拆分htmlcssjs以及ajax或之类的东西libraries。对于小事情,您可以使用SO 解决方案,但对于更大的事情,我总是更喜欢jsfiddle ...并且:没有使用内联版本的规则!所以,每个人都可以为所欲为。 :) @EdwardBlack
    【解决方案3】:

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

    【讨论】:

      猜你喜欢
      • 2021-09-06
      • 2021-05-16
      • 2017-10-08
      • 1970-01-01
      • 2011-03-03
      • 2011-04-17
      • 1970-01-01
      • 2010-11-29
      • 2020-06-30
      相关资源
      最近更新 更多