通过javascript填充输入框时使物化标签移出输入框
Make materialize labels move out of input box when input box is filled via javascript
通常,对于 Materialize,文本输入框的标签会显示在输入框内,直到用户输入选择框并在其中输入文本。但是,当通过 javascript 填充框的值时,标签不会移开。它保留在框中并与输入的文本重叠。有没有办法也用 javascript 触发标签转换,所以这不会发生?
标签转换行为是通过将 active
class 添加到标签的元素来触发的。因此,如果除了填写字段之外,还让 javascript 添加 class 到标签(例如 $('label').addClass('active')
),则标签将过渡到字段之外,就像在由用户操作选择。
JQuery 你可以使用
$('#yourInputText').change();
更具体地说,如果您在 Rails 中使用启用了 turbolinks 的 Materialise,您会发现预填充非空值的 Materialise 表单字段在页面加载时不活动。
以下方法对我有用:
$(function() {
M.updateTextFields();
});
它将添加 class 'active'
到相应的标签和前缀图标。
document.ready
事件仅在 turbolinks 工作时触发一次,因此您需要利用 turbolinks 加载事件。
它如此 发生得如此之快,如果您想观看动画,请将其包装在一个微小的超时中。
有timeout/visible动画
document.addEventListener('turbolinks:load', () => {
setTimeout(() => {
M.updateTextFields();
}, 100);
});
无timeout/visible动画
document.addEventListener('turbolinks:load', () => {
M.updateTextFields();
});
Rails 5 与 Turbolinks 和 Materialise CSS 1.0.0
将 class="active"
添加到与输入字段关联的 label
标签中。
如果您使用的是旧版本 (0.x) 的 Materializecss,请使用:
Materialize.updateTextFields();
而不是:
M.updateTextFields();
如果您使用标签,您将使用:
$("label[for='idTag']").addClass('active');
对于任何在 ReactJS 中寻找解决方案的人:
- link 输入的值 属性 到组件状态中的某个值。 (例如:值={this.state.name})
- 将行
document.M.updateTextFields()
添加到组件的 componentDidMount()
lifeCycle 方法中。
当需要将某些值预先填充到表单中时,上述解决方案会有所帮助。 (例如:更新详细信息表格)
通常,对于 Materialize,文本输入框的标签会显示在输入框内,直到用户输入选择框并在其中输入文本。但是,当通过 javascript 填充框的值时,标签不会移开。它保留在框中并与输入的文本重叠。有没有办法也用 javascript 触发标签转换,所以这不会发生?
标签转换行为是通过将 active
class 添加到标签的元素来触发的。因此,如果除了填写字段之外,还让 javascript 添加 class 到标签(例如 $('label').addClass('active')
),则标签将过渡到字段之外,就像在由用户操作选择。
JQuery 你可以使用 $('#yourInputText').change();
更具体地说,如果您在 Rails 中使用启用了 turbolinks 的 Materialise,您会发现预填充非空值的 Materialise 表单字段在页面加载时不活动。
以下方法对我有用:
$(function() {
M.updateTextFields();
});
它将添加 class 'active'
到相应的标签和前缀图标。
document.ready
事件仅在 turbolinks 工作时触发一次,因此您需要利用 turbolinks 加载事件。
它如此 发生得如此之快,如果您想观看动画,请将其包装在一个微小的超时中。
有timeout/visible动画
document.addEventListener('turbolinks:load', () => {
setTimeout(() => {
M.updateTextFields();
}, 100);
});
无timeout/visible动画
document.addEventListener('turbolinks:load', () => {
M.updateTextFields();
});
Rails 5 与 Turbolinks 和 Materialise CSS 1.0.0
将 class="active"
添加到与输入字段关联的 label
标签中。
如果您使用的是旧版本 (0.x) 的 Materializecss,请使用:
Materialize.updateTextFields();
而不是:
M.updateTextFields();
如果您使用标签,您将使用:
$("label[for='idTag']").addClass('active');
对于任何在 ReactJS 中寻找解决方案的人:
- link 输入的值 属性 到组件状态中的某个值。 (例如:值={this.state.name})
- 将行
document.M.updateTextFields()
添加到组件的componentDidMount()
lifeCycle 方法中。
当需要将某些值预先填充到表单中时,上述解决方案会有所帮助。 (例如:更新详细信息表格)