2012-02-04 3 views
3

У меня есть проверка формы JQuery, где im проверка длины имени пользователя не долго для базы данных, но, похоже, возвращает true eveytime.JQuery form string length validation

Я что-то упустил?

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

Когда этот код выполняется? –

+1

Можете ли вы поделиться кодом HTML? Не могу судить ничего, просто глядя на JavaScript. – apnerve

+0

В коде, который вы опубликовали, нет ничего плохого, вам также нужно будет отобразить форму, поскольку, похоже, проблема в другом месте – ShadowStorm

ответ

3

У меня есть JQuery форма проверки, где им проверять длину имени пользователя не долго для базы данных, но это, кажется, вернуть истинное eveytime.

Вы проверяете, является ли имя пользователя короче, чем 30, а не больше!

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

примечание:

  • Там нет необходимости добавлять тип элемента для селектора идентификатора уникально, что добавляется к нему, увеличит нагрузку селектора

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

+0

Приятно поблагодарить, что я мог бы поклясться, что удостоверьтесь, что –

+1

@HeDares. неловко ... Не волнуйтесь, такие вещи случаются со всеми. – gdoron

6

Вы можете использовать плагин JQuery Validator для этого;

просто нужно изменить свой html для чего-то подобного;

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

, используя этот подход, вам не нужно определить это нескольких тегов этикеток с разными идентификаторами (username_error, username_length) для обработки каждого отдельного сообщения ограничения, и не нужно беспокоиться о том скрыть эти тег, то JQuery плагин будет отредактируйте это для вас и поместите соответствующее сообщение в ротор с маской с именем «username» для вас. И не смог настроить эти сообщения.

Ваши js будут такими;

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

ваш код будет более чистым, см API documetation для получения дополнительной информации, http://docs.jquery.com/Plugins/Validation