javascript - 基于其子类jQuery隐藏html元素

标签 javascript jquery forms

我有两种表单(登录和注册),其中一种在页面加载时隐藏(登录表单被隐藏)。用户可以通过按钮在它们之间切换。当登录失败时,它会抛出错误并显示在登录表单中。问题是,当登录失败后加载页面时,它会隐藏登录表单并显示注册表单。仅当用户单击登录表单按钮时,才会显示错误。我想显示重新加载页面时出现错误的表单。

$(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();            
}

最佳答案

$ 返回一个类似数组的对象。您必须像这样检查 length 属性:

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

关于javascript - 基于其子类jQuery隐藏html元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41902563/

相关文章:

包含消息、日期和时间的 php 登录表单

javascript - instanceof,范围和对象

javascript - 如何以特殊分割方式重复背景图

javascript - href 部分的首字母大写

javascript - 如何在 Firefox 插件中使用来自外部 URL 的内容脚本文件

html - 将表单添加到 html 电子邮件通讯

javascript - 页面加载时自动提交表单

javascript - 如何在单个请求中通过他们的 ID 从谷歌驱动器获取文件

javascript - 在 AngularJS 中保留浏览器刷新时的数据

c# - 普通 .NET Web 服务应用程序中 HTTP session 状态的替代方案