为什么会出现这种情况?

时间:2013-12-19 21:19:08

标签: jquery

我有一个包含字段的HTML表单

<div style="width:100px; padding-top:10px;margin-left:10px;float:left;" align="left">Your Username:</div>
<div style="width:300px;float:left;" align="left"><input type="text" id="username" name="username" value="" class="vpb_textAreaBoxInputs"></div>

现在,当我尝试使用像这样的javacript验证表单时

<script>
    $(document).ready(function() {
        $("#smbt").click(function(){
            if ($("#username").val()=="") {
                alert("Field is empty.");
            } else {
                alert("You are ok.");
            }
        });
    });
</script>

上面的程序运行正常,但是当我将div id更改为“usernames”并将其命名为“usernames”时,会发生一件奇怪的事情

<input type="text" id="usernames" name="usernames" class="vpb_textAreaBoxInputs">

一旦我执行上述操作,程序就会开始输出错误的输出。就像用户名文本字段是空的一样,它会弹出警告消息“你没事”,如果没有,它仍会弹出警告消息“你没事”。但是一旦我更改id =“username”name =“username”,程序就会正确运行。为什么会因为's'而发生这种情况?

4 个答案:

答案 0 :(得分:4)

您需要更改jQuery以匹配ID更改。当ID为“usernames”时,它正在寻找“用户名”,因此该语句为假。

if ($("#username").val()=="") {

应该是

if ($("#usernames").val()=="") {

答案 1 :(得分:1)

你也改变了吗?

$("#username").val()

$("#usernames").val()

答案 2 :(得分:0)

当您将字段的id更改为usernames时,$("#username").val()将导致undefined与空字符串不同。所以你也需要更改jQuery选择器。

如果您想处理undefined并清空字符串,可以将测试更改为:

if (!$("#username").val()) {
    alert("Field is empty.");
} else {
    alert("You are ok.");
}

答案 3 :(得分:0)

这是因为在实际页面上找不到用户名。

JQuery选择器返回一组匹配的aleements。所以val变得不确定。

这不等于“”,因此您的代码会输入else子句。

HTH