2015-04-19 2 views
1

Я пытаюсь создать проверку jQuery, до сих пор мне удалось добавить класс ('has-error') в div.form-control. Я пытаюсь удалить этот класс, когда я нажимаю TAB или выхожу из поля ввода, но мой код не работает.blur() не запускается, когда я выхожу за пределы поля ввода

HTML код

<form class="form-horizontal" onsubmit='return false;' id="useradd"> 

<input type="hidden" id="token" name="_token" value="{{csrf_token()}}"> 
<div class="form-group"> 
    <label class="col-sm-2 control-label">Name</label> 

    <div class="col-sm-8"> 
     <input type="text" class="form-control" value="" name="username" id="username" required> 
    </div> 
</div> 
<div class="hr-line-dashed"></div> 
<div class="form-group" id="useremail-div"> 
    <label class="col-sm-2 control-label" id="email-label">Email</label> 
    <div class="col-sm-8"> 
     <input type="text" class="form-control" value="" name="useremail" id="useremail"> 
    </div> 
</div> 
<div class="hr-line-dashed"></div> 
<div class="form-group"> 
    <label class="col-sm-2 control-label">Password</label> 

    <div class="col-sm-8"> 
     <input type="password" class="form-control" value="" name="password" id="password" required> 
    </div> 
</div> 

JS код

if ($("#username").val() == "" || $("#username").val().length < 3) { 
      $("#username").addClass('error'); 
      return false; 
     } else { 
      name = $("#username").val(); 
      $("#username").removeClass('error'); 
     } 
     if ($("#useremail").val() == "" || $("#useremail").val().length < 3 || !emailpatt.test($("#useremail").val())) { 
      $("#useremail-div").addClass('has-error'); 
      $('#email-label').text('Incorrect Email Address'); 
      return false; 
     } else { 

      $("#useremail").blur(function() { 
       console.log('out'); 
      }); 


     } 

Я попытался focusout() и focusleave(), ничего не получалось.

+1

обработчик событий находится в состоянии – adeneo

+0

Где еще она должна быть? – Halnex

+0

Где-то еще? – adeneo

ответ

2

Вы должны положить, что размытие Тригер вне из если еще так:

$(document).ready(function(){ 
    $("#username").blur(function() { 
     if ($("#username").val() == "" || $("#username").val().length < 3) { 
      $("#username").addClass('error'); 
     } else { 
      name = $("#username").val(); 
      $("#username").removeClass('error'); 
     } 
    });   

    $("#useremail").blur(function() { 
     if ($("#useremail").val() == "" || $("#useremail").val().length < 3 || !emailpatt.test($("#useremail").val())) { 
      $("#useremail-div").addClass('has-error'); 
      $('#email-label').text('Incorrect Email Address'); 
     } else { 
      $("#useremail-div").removeClass('has-error'); 
      $('#email-label').text('Email Address'); 
     } 
    }); 
}); 

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

if ($("#useremail").val() == "" || $("#useremail").val().length < 3) 
+0

Но я пытаюсь сказать, что адрес электронной почты недействителен addClass ('has-error') для div.form-control ELSE removeClass ('has-error'). Я использовал console.log, чтобы убедиться, что что-то происходит, и это не так. Ваш код не работает. – Halnex

+0

Хорошо, я понимаю, теперь подождите, я отредактирую свой пост через несколько минут, чтобы помочь вам :-) – Redrif

+0

@Halnex я отредактировал свой ответ. Проверьте это сейчас, если это поможет вам сейчас. – Redrif

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