输入无效值时,在输入字段中添加图标

时间:2018-02-09 20:15:32

标签: jquery html css css3 materialize

我正在使用Materialize CSS处理表单,该表单在用户填写表单时进行非常基本的验证。例如,如果用户忘记了电子邮件字段中的@符号,则会添加名为invalid的类,该字段在字段底部显示一条红线。我被赋予了在无效类被触发时添加另一个可视指示器(特别是警报图标)的任务。

最初,我虽然可以利用Materialise的图标后缀功能。我已经把我一直在努力的小提琴放在一起但没有成功。

基本上,我设置.material-icons显示none,然后我试图显示类,如果输入hasClass无效。这就是我的意思:

$(document).ready(function() {
    if($('input').hasClass('invalid')){
     $('.material-icons').show();
   }
});

CSS:

@import "https://fonts.googleapis.com/icon?family=Material+Icons";

.input-field.suffix i {
  position: absolute;
  width: 3rem;
  font-size: 2rem;
  transition: color .2s;
  top: 0px;
  right: 0px;
}

.input-field.suffix i.active {
  color: #26a69a;
}

.input-field.suffix input,
.input-field.suffix textarea {
  margin-right: 3rem;
  width: 92%;
  width: calc(100% - 3rem);
}

.input-field.suffix textarea {
  padding-top: .8rem;
}

.input-field.suffix label {
  margin-right: 3rem;
}

HTML:

<form>
  <div class="row">
    <div class="input-field suffix col s6">
      <input id="icon_prefix" type="email" class="validate">
      <label for="icon_prefix">email</label>
      <i class="material-icons">email</i>
    </div>
  </div>
</form>

也许我正在看这个错误,但相信我应该能够检测一个元素是否有一个类然后做某事。

JSFiddle

1 个答案:

答案 0 :(得分:1)

由于图标位于输入框旁边,您只需使用:

.material-icons {
  display: none;
}

.invalid ~ .material-icons {
  display: block;
}

<强> jsFiddle