我有几种形式有几个输入。我的老板让我找到一种方法来禁用表格并有一个锁定/解锁按钮。因此,用户将转到表单,单击解锁进行更改,然后锁定和/或保存表单。主要问题是试图找出如何在没有硬编码的情况下做到这一点" disabled = true"进入所有输入(可能是几百个)。
我90%的方式。我有toggleLock动作工作,我甚至拥有它,所以即使你在同一路径中转换到不同的模型,表单也会锁定。问题是表单第一次加载页面或刷新页面时表格没有锁定。
这里是代码: 可从以下位置获取:https://github.com/djbreen7/ember-sandbox
应用/模板/餐/ view.hbs
class FixedButton : Button {
public string FixedText;
public Point TextOffset;
/*public PointF FixedTextLocation {
get{return new PointF( (float)(Location.X+TextOffset.X), (float)(Location.Y+TextOffset.Y) );}
}*/
protected override void OnPaint(PaintEventArgs e){
base.OnPaint(e);
if(String.IsNullOrEmpty(Text) && !String.IsNullOrEmpty(FixedText) ){
e.Graphics.DrawString(FixedText, Font, new SolidBrush(ForeColor), TextOffset);
}
}
}
应用/路由/餐/ view.js
<form class="edit-form">
<div class="form-group">
<label for="exampleInputEmail1">Meal Name</label>
{{input type="text" class="form-control" id="" placeholder="" value=model.name}}
</div>
...
<button id="toggle-lock" type="button" class="btn btn-default" {{action 'toggleLock'}}>Unlock</button>
</form>
答案 0 :(得分:0)
块引用
您可以更轻松地解决这个问题,这些是您可以遵循的步骤:
if(something){
rlayout.setBackground(getResource().getDrawable().R.drawable.img);
}
or
use switch
isLocked:true
功能将lockForm
属性添加到您的输入中。这将根据`isLocked。
disable
从{{input type="text" class="form-control" id="" placeholder="" value=model.name disabled=isLocked}}
和controller.send('toggleLock');
函数中删除model
,因为您将beforeModel
设置为true
添加isLocked
挂钩以处理同一路径中的转换
resetController
这是一个正在运行的示例https://ember-twiddle.com/fd75547e27faf867ce0daeb9eb65db14?openFiles=controllers.application.js%2C
答案 1 :(得分:0)
你可以使用jQuery的强大功能。使用jQuery,您可以在一行中禁用页面(或页面的一部分)中的所有输入字段:
$("input").prop("disabled", true);
如果你有textareas,你也必须为它们添加一行:
$("textarea").prop("disabled", true);
如果某些字段每次都会被禁用,该怎么办:
如果您有一些已经禁用的输入,则应将其原始值存储为属性(在将每个输入的状态设置为禁用之前):
$('input:disabled').attr('prev_disabled',true);
这样你就可以在切换两次后恢复它们(在将每个输入的状态设置为启用之后):
$('input[prev_disabled]').prop('disabled',true);
如何在jmber.js中使用jQuery:
您可以在您的操作,组件生命周期,Ember运行循环等中使用它。(Web上有大量示例,例如this blog)
操作中的示例用法:
actions: {
lockRequested: function() {
this.$('input:disabled').attr('prev_disabled',true);
this.$("input").prop("disabled", true);
},
unlockRequested: function() {
this.$("input").prop("disabled", false);
this.$('input[prev_disabled]').prop('disabled',true);
}
}
如果您想在进入页面后锁定输入,请使用组件生命周期(例如didRender
,didInsertElement
或ember run loop)