我有一个包含字段的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'而发生这种情况?
答案 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