使用 materialize.css 和 jQuery 重置输入

Reset input with materialize.css und jQuery

我想使用

清除输入字段
$('#test').val('');

字段本身已被清除,但 Materialize.css 中的突出显示仍然保持填充状态。

https://codepen.io/anon/pen/vrPNKd

使用...

$('#form')[0].reset();

... 我别无选择。我只想重置一个输入字段而不是整个表单。

有人有想法吗?

谢谢

// 编辑

找到解决方案:

$('#test').val('').removeClass('valid');
M.updateTextFields();

您需要从 <input> 旁边的标签元素中删除 class active:

$('#test').val('');
$('#test').next().removeClass('active');

next 方法用于 select <label> 元素,因为它是 <input> 元素的紧随其后的同级元素。

我找到了解决方案...它有点长但很有效!

在Blade视图中

<div class="input-field testValidator">
    <input name="test" id="test" type="text" data-length="8">
    <label for="test">test</label>
</div>

在jQuery

  $("input[name='test']").val('');
  $('.testValidator span').text('');

逻辑是将 input-field 的跨度措辞中的文本从“??/8”更改为“”

我检测到文本区域的样式会根据您在文本区域内键入的行数而增长。

在我的例子中,默认的内联样式如下.. style="height: 43px";

因此,为了将文本区域重置为原始高度,我使用 JQuery

执行了以下操作
$('#test').val('');
$('#test').css('height', '43px');

希望对您有所帮助!

如果您使用 correct element structure,那么当您填写具体化表格时会发生三件事:

1) 输入值

2)标签位置

3)输入样式(验证class)

这是一个未填写的输入:

<div class="input-field col s6">
     <input id="last_name" type="text" class="validate">
     <label for="last_name">Last Name</label>
</div>

并填写:

<div class="input-field col s6">
     <input id="last_name" type="text" class="validate valid">
     <label for="last_name" class="active">Last Name</label>
</div>

要回到原始状态,我们需要从输入中删除 .valid class(添加绿色边框底部),从标签中删除 .active class(移动它向上)然后输入文本:

jQuery('#last_name').removeClass('valid').val('');
jQuery('label[for=last_name]').removeClass('active')