2013-06-23 1 views
0

Я до сих пор смущен. Начало обучения JQuery около недели теперь, и это то, что у меня есть:Использование Blur и отправка событий в той же форме

var IsValidUserName = false; 

$(document).ready(function() { 
    $('#txtUserName').blur(function() { 

    if ($('#txtUserName').val().match(isNumberLetter) && 
($('#txtUserName').val().length >= 8)) { 

      $('#userNameError').removeClass("error").addClass("default"); 
      $('#txtUserName').removeClass("alert"); 
      $('#txtUserName + label').removeAttr("id", "lblUserName"); 
      IsValidUserName = true; 
     } 
     else { 
      $('#userNameError').removeClass("default").addClass("error"); 
      $('#txtUserName').addClass("alert"); 
      $('#txtUserName + label').attr("id", "lblUserName"); 
     } 
    }); 
}); 

Допустим, у меня есть еще одна функция, как выше, позволяет сказать ПгвЬЫате:

Как назвать это по отправке мероприятие? Код работает так, как мне нужно, когда пользователь покидает поле. Не уверен, как я могу назвать этот код, а также использовать указанную выше переменную, чтобы предотвратить отправку, если введенные данные недействительны.

Мне нужно вызвать подтверждение выше, если пользователь нажимает кнопку отправки и останавливает отправку, если переменная IsValidUserName равна false.

Для чего-то нужно немного толчок.

Спасибо моим друзьям.

Guy

+0

Вы можете всегда «запускать» размытие таким образом, когда вы отправляете форму - '$ ('# txtUserName'). Blur()' .. и вы можете изменить '$ ('# txtUserName')' * * внутри ** функция 'blur' до' $ (this) ' – krishgopinath

+0

' $ ('# txtUserName'). on ("submit", "form", function (event) {''}); ' – Sergio

+1

Добавление к @Sergio: '$ (document) .on (" submit "," form ", function (event) {$ ('# txtUserName'). Blur()});' – krishgopinath

ответ

2

Вы всегда можете извлечь его в функцию вместо анонимной функции и передать ссылку на объект, который вы хотите проверить. Это даст вам дополнительное преимущество повторного использования его для других элементов.

function validate(ele) { 
    var valid; 

    if (ele.val().match(isNumberLetter)) && (ele.val().length >= 8)) { 
     valid = true; 

     // update user here. 
    } else { 
     valid = false; 

     // update user here. 
    } 

    return valid; 
} 

$(function(){ 
    $('#firstName').blur(function(){ validate($(this)); }); 
    $('#lastName').blur(function(){ validate($(this)); }); 

    $("yourFrom").submit(function(){ 
     var firstNameIsValid = validate($('#firstName')); 
     var lastNameIsValid = validate($('#lastName')); 

     if (!nameIsValid) && (!lastNameIsValid) { 
      return false; 
      // User has already been updated 
     } 
    }); 
}); 

Кроме того, поскольку вы уже сильно использованием JavaScript для проверки (надеюсь, что это удобство, а не только безопасности), вы также можете отключить кнопку отправки полностью, пока форма не отвечает требованиям надлежащей.

+0

Спасибо всем: @John Я думаю, что отключить кнопку отправки до тех пор, пока форма не будет действительной, это отличная идея. У меня уже есть серьезная проверка на стороне сервера за кулисами. Поэтому JS - это просто вопрос удобства использования. – Asynchronous

Смежные вопросы