2012-02-04 141 views
3

我有一些JQuery表单验证,即时检查用户名的长度不是数据库的长,但它似乎是返回真正的eveytime。JQuery表单字符串长度验证

我错过了什么吗?

HTML

<form name="contact" method"post" action=""> 
<fieldset> 

<label for="username" id="username_label" class="form_label">Username</label> 
<input type="text" name="username" id="username" size="30" value="" class="text-input" /> 
<label class="error" for="username" id="username_error">This field is required.  </label> 
<label class="error" for="username" id="username_length">Your Username should be less than 30 characters.</label> 
<input type="submit" name="submit" class="button" id="submit_btn" value="Send" /> 
</fieldset> 
</form> 

的JavaScript

$(function() { 
$('.error').hide(); 
$(".button").click(function() { 
    // validate and process form here 

$('.error').hide(); 
    var username_length = $("input#username").val().length; 
    if (username_length < 30) { 
    $("label#username_length").show(); 
    $("input#username").focus(); 
    return false; 
    } 
} 
+1

此代码执行时? – 2012-02-04 17:27:30

+1

你能分享'HTML'代码吗?无法仅仅通过查看JavaScript来判断任何内容。 – apnerve 2012-02-04 17:27:31

+0

您发布的代码似乎没有任何问题,您也需要显示该表单,因为它似乎是其他地方的问题 – ShadowStorm 2012-02-04 17:32:06

回答

3

我有一些JQuery的表单验证,其中IM检查用户名的长度不长的数据库,但它似乎回到真正的eveytime。

您正在检查unsername是否比30更短,不再更长!

if (username_length < 30) {// !!! 

注:

  • 没有必要添加元素类型的ID选择ID是唯一的,任何加入到它,会增加选择的开销

$("input#username") = >$('#username')

+0

不错的谢谢我可以发誓证实 – 2012-02-04 17:39:06

+1

@HeDares。尴尬...不要担心,像这样的事情发生在每个人身上。 – gdoron 2012-02-04 17:41:11

6

您可以使用JQuery Validator插件来执行此操作;

只需要改变你的html为这样的东西;使用

<label for="username">User Name:</label> 
<input type="text" name="username" id="username" value="..." /> 

这种方法,你不需要定义与型动物IDS(username_error,username_length)来处理每一个约束消息这多个标签的标签,而且不需要担心隐藏这些标签,jQuery的插件会为您处理这个问题,并将适当的信息与“用户名”一起放入标签中。并自由地定制此消息。

你的js会像这样;

$("form[name=contact]").validate({ 
//... 
rules: { 
     username: { 
      required: true, 
      maxlength: 30 
} 
//... 
}); 

你的代码会更加干净,更多信息请参见API documetation,http://docs.jquery.com/Plugins/Validation