2017-01-27 2 views
0

У меня есть две формы (вход и регистрация), в которых вы скрыты при загрузке страницы (форма входа скрыта). Пользователи могут переключаться между ними с помощью кнопки. При неудаче входа в систему он выдает ошибку и отображается в форме входа в систему. Проблема заключается в том, когда страница загружается после входа в систему, она скрывает форму входа и показывает форму Регистр. Только когда пользователь нажимает кнопку входа в систему, он показывает ошибку. Я хочу показать форму, которая имеет ошибку при перезагрузке страницы.Скрытие элементов html на основе его дочернего класса jQuery

$(document).ready(function(){ 
    $('#login_form').hide(); 
}); 

Это мой Войти Форма

<form action="/login" method="post" id="login_form"> 
{{csrf_field()}} 

<div class="form-group{{ $errors->has('email') ? ' has-error' : '' }}"> 
<input type="text" name="email" id="login_email" placeholder="Email"/> 
@if ($errors->has('email')) 
<span class="help-block"> 
    <strong>{{ $errors->first('email') }}</strong> 
</span> 
@endif 
</div> 

<div class="form-group{{ $errors->has('password') ? ' has-error' : '' }}"> 
    <input type="password" name="password" id="login_pass" placeholder="Password"/> 
    @if ($errors->has('password')) 
<span class="help-block"> 
    <strong>{{ $errors->first('password') }}</strong> 
</span> 
    @endif 
    </div> 

    <div class="form-group"> 
    <input type="submit" class="btn" id="login_sbt_btn" value="Login"/> 
    </div> 

</form> 

help-block получает только добавляется, когда ошибка есть в виде

Это работает хорошо, но скрывает всю форму, когда страница загружается первый.

var $errorField = $('.has-error');  
if($errorField) {      
    $('form').hide();     
    $errorField.closest('form').show(); 
} else { 
    $('#login_form').hide();    
} 
+0

Почему бы не просто переместить элемент ошибки вне обеих форм (такой же уровень, как кнопку отправки)? – APAD1

ответ

1

$ возвращает массивный объект. Вы должны проверить length свойство как это:

var $errorField = $('.has-error');  
if($errorField.length != 0) {      
    $('form').hide();     
    $errorField.closest('form').show(); 
} else { 
    $('#login_form').hide();    
} 
+0

@NaveenKumar 'if ($ errorField)' всегда будет 'true' (даже если элементы не найдены). '$' всегда возвращает объект (объект никогда не является ложным). –

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