val()不会获取当前输入值

时间:2013-01-06 04:00:25

标签: jquery html

我正在尝试获取输入字段的值,但在更新时它不会抓取它。我正在尝试在表单中创建ajax日志。这是代码

<form method="post" id="contactform">
    <label for="name">Username</label>
    <input type="text"  id="un" placeholder="Username"  />

    <label for="password">Password</label>
    <input type="password"  id="pw" placeholder="Password"  />

    <br/>
    <button name="submit" type="submit" class="btn" id="submit" onclick="logUserIn(); return false;">Log In</button>

    <script type="text/javascript">
    function logUserIn()
    {
        var un = $("#un").val();
        var pw = $("#pw").val();

        alert(un);
    }
    </script>

如果我在输入字段中输入内容并单击“提交”按钮,则不会为我更新。

如果我要像这样手动更改输入值字段

<input type="text"  id="un" placeholder="Username" value="test" />

然后我收到警告“测试”。

3 个答案:

答案 0 :(得分:3)

jquery站点上val()的定义指出&#34;获取匹配元素集合中第一个元素的当前值&#34;。我不确定&#34;元素&#34;指的是在调试模式中单步执行我的Javascript我可以看到jquery对象(由$(&#39;#field_id&#39;)返回)在第一个数组元素中保存原始值,但是在输入文本被更改之后,更新后的值保存在第二个数组元素中。使用last()为我工作,例如$(&#39; #field_id&#39;)。last()。val();

答案 1 :(得分:2)

我建议您不引人注意地编写JavaScript,即将所有JavaScript保存在脚本标记中,并将标记分开。见Unobtrusive JavaScript - Wikipedia

HTML:

    <form method="post" id="contactform">
      <label for="name">Username</label>
      <input type="text" id="un" placeholder="Username" />
      <label for="password">Password</label>
      <input type="password" id="pw" placeholder="Password"
      />
      <br/>
      <button id="btnLogin" name="submit" type="submit" class="btn" id="submit">Log In</button>
</form>

JavaScript的:

$(function() {
  $('#btnLogin').click(logUserIn);
});

function logUserIn() {
  var un = $("#un").val();
  var pw = $("#pw").val();

  alert(un);

  return false;
}

Live Demo

答案 2 :(得分:2)

将空值属性添加到输入标记,我希望这可能对您有用。例如:

<input type="text"  id="un" placeholder="Username" value="" />
<input type="password"  id="pw" placeholder="Password" value="" />