【问题标题】:How to display error icon inside input field using Bootstrap and jQuery?如何使用 Bootstrap 和 jQuery 在输入字段内显示错误图标?
【发布时间】:2021-04-12 16:14:00
【问题描述】:

我有一个简单的表格,NameEmail。我收到正确的验证错误,但没有在输入字段中获得图标。我得到了右上角的十字图标。你能帮我解决这个问题吗?

我得到输出

我需要这样的输出

$('#myform').validate({    
    rules: {
        name: {
            minlength: 3,
            maxlength: 15,
            required: true
        },
         email: {
            required: true,
            email: true
        },
    },
    highlight: function(element) {
        var id_attr = "#" + $( element ).attr("id") + "1";
        $(element).closest('.form-group').removeClass('has-success').addClass('has-error');
        $(id_attr).removeClass('glyphicon-ok').addClass('glyphicon-remove');         
    },
    unhighlight: function(element) {
        var id_attr = "#" + $( element ).attr("id") + "1";
        $(element).closest('.form-group').removeClass('has-error').addClass('has-success');
        $(id_attr).removeClass('glyphicon-remove').addClass('glyphicon-ok');         
    },
    errorElement: 'span',
        errorClass: 'help-block',
        errorPlacement: function(error, element) {
            if(element.length) {
                error.insertAfter(element);
            } else {
            error.insertAfter(element);
            }
        } 
 });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<script src="//ajax.aspnetcdn.com/ajax/jquery.validate/1.14.0/jquery.validate.min.js" type="text/javascript"></script>


<form class="form-horizontal" id="myform">
<input type="text" name="name"  placeholder="name" id="name">
<span class="glyphicon form-control-feedback" id="name1"></span>

<input type="email" name="email" id="email"  placeholder="email"><span id="status"></span>
<span class="glyphicon form-control-feedback" id="email1"></span>

</form>

【问题讨论】:

  • 非常简单的解决方案是为输入设置错误的背景图标并根据错误状态控制其可见性
  • 我在您的 HTML 中没有看到任何 .form-group,我想知道您为什么要执行类似 var id_attr = "#" + $( element ).attr("id") + "1"; 的操作。如果您将输入包装在input-group 中,那么您可以选择带有$(parent).find('.form-control-feedback") 的孩子

标签: javascript jquery html css twitter-bootstrap


【解决方案1】:

只需将样式与您的 CSS 合并并删除重要部分。还要对您的标记进行一些调整。

$('#myform').validate({    
    rules: {
        name: {
            minlength: 3,
            maxlength: 15,
            required: true
        },
         email: {
            required: true,
            email: true
        },
    },
    highlight: function(element) {
        var id_attr = "#" + $( element ).attr("id") + "1";
        $(element).closest('.form-group').removeClass('has-success').addClass('has-error');
        $(id_attr).removeClass('glyphicon-ok').addClass('glyphicon-remove');         
    },
    unhighlight: function(element) {
        var id_attr = "#" + $( element ).attr("id") + "1";
        $(element).closest('.form-group').removeClass('has-error').addClass('has-success');
        $(id_attr).removeClass('glyphicon-remove').addClass('glyphicon-ok');         
    },
    errorElement: 'span',
        errorClass: 'help-block',
        errorPlacement: function(error, element) {
            if(element.length) {
                error.insertAfter(element);
            } else {
            error.insertAfter(element);
            }
        } 
 });
.field-container {
  float: left;
  position: relative;
}

.form-control-feedback {
  line-height: 20px;
  font-size: 20px;
  line-height: 20px !important;
  height: 20px !important;
}
.glyphicon-ok {
  color: #4FAC34;
}
.glyphicon-remove {
  color: #FF0000;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<script src="//ajax.aspnetcdn.com/ajax/jquery.validate/1.14.0/jquery.validate.min.js" type="text/javascript"></script>


<form class="form-horizontal" id="myform">
<div class="field-container">
<input type="text" name="name"  placeholder="name" id="name">
<span class="glyphicon form-control-feedback" id="name1">x</span>
</div>
<div class="field-container">
<input type="email" name="email" id="email"  placeholder="email"><span id="status"></span>
<span class="glyphicon form-control-feedback" id="email1">x</span>
</div>
</form>

【讨论】:

  • 感谢您的回复 Mr.aavrug。我检查了您的输出我在输入字段之外得到了十字符号。
  • 它现在对我有用。我试过位置:绝对;顶部:10px;右:16px;在类表单控制反馈中。工作完美。我需要一个帮助,我必须更改十字标志的颜色。如果细节比绿色或红色正确。你能帮我吗?
  • 这应该用 JS 来完成,或者如果你在成功验证的输入上添加任何类型的类,那么你可以使用 CSS 来玩那个类。
  • 你能帮我提供任何链接吗?以便我参考。
  • 添加CSS可以看到sn-p的变化。
【解决方案2】:

使用bootstrap的十字图标

HTML:

<div class="form-group">
     <input type="text" name="name"  placeholder="name" id="name">
     <span class="glyphicon glyphicon-remove cross" aria-hidden="true"></span>
 </div>

CSS:

.form-group{
    position:relative;
 }

 span.glyphicon-remove.cross{
    position: absolute;
    transform: translate(-50%, -50%);
    top: 50%;// put the proper position of that cross from top
    right: 0;// put the proper position of that cross from right
 }

【讨论】:

  • 对不起,Taniya,我仍然得到右上角的图标。
  • 因为您的表单占据了整个页面的宽度。将您的表单放入
  • 我遇到了同样的问题。你可以为我制作 JSfiddle 吗?让我很容易理解
【解决方案3】:

使用输入组将图标链接到输入字段,然后默认隐藏跨度并将其显示在验证函数中。

<div class="input-group">
      <input type="text" class="form-control">
      <span class="input-group-addon"><i class="glyphicon glyphicon-times"></i></span>
    </div>

工作小提琴:https://jsfiddle.net/084w9en1/1/

【讨论】:

  • 对不起影狐先生。还是同样的问题。
  • 感谢Shadowfox先生的再次回复。我有你现在添加的代码。我必须根据上面的图像设置问题。
猜你喜欢
  • 2013-12-14
  • 1970-01-01
  • 2021-03-11
  • 1970-01-01
  • 2014-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多