我希望能够在单击按钮时将所有文本字段重置为默认值。
我到目前为止所做的是查询所有文本字段并绑定我写的一个名为' textChanged'更改事件如下:
require(["dojo/on","dojo/query"], function(on,query){
query(".Text").on("change",textChanged);
});
该功能定义如下:
function textChanged(newVal)
{
...
}
我发现我可以通过执行赋值来重置函数体中的值:
newVal.target.value = newVal.target.defaultValue;
如果此功能由更改事件触发。
我想要做的是如果单击一个按钮,那么我想执行newVal.target.value = newVal.target.defaultValue并且无法正确获取上下文。
我试图保留这个'这个'调用它时的变量以及保留“新变量”的变量。参数。如果我尝试在上下文之外设置值,则更新不会保留。我试过设置这个'这个'值为某个其他值(nt = this)和newValue到另一个变量(nv = newValue)然后我想执行: nv.target.value = nv.target.defaultValue; 虽然它清除了表单上的字段,但在提交表单时,其实际值仍然是手动修改的值。我注意到了这个'这个'与我在更改事件中调用textChanged时的情况不同,当我在按钮单击的上下文中直接调用它时。
我尝试使用' hitch'将此上下文设置为它从更改事件中获得的值,但似乎没有设置正确的上下文:
require(["dojo/on", "dojo/_base/lang"], function(on, lang) {
lang.hitch(nt, textChanged(nv));
});
准确地说 - 在textChanged中我显示了'这个'使用console.log(this); 当文本从UI更改时调用textChanged时,'这个'是:
然而,当点击我通过
调用它的按钮调用它时lang.hitch(nt, textChanged(nv));
'这'是: Window fauxRedirect.lsw?applicationInstanceId = guid%3A1eae6af09bf6f543%3A-6644aeb4%3A13a8a4c429e%3A-7ffe& zWorkflowState = 2& zTaskId = p1& applicationId = 2& zComponentName = CoachNG& zComponentId = 3028.b1094dc3-da2b-461a-8d56-f6444891c174& ; zDbg = 2#%20%20
我已经确认' nt'确实是一样的#39;
所以,我试图执行textChanged函数,以便'这个'设置为该值。
或者,如果有更好的方法可以将字段从另一个控件重置为默认值 - 这也可以。
提前致谢。
答案 0 :(得分:3)
我不确定你要做什么的完整背景,所以不知道这是否能回答你的问题?
只要表单中的所有小部件都包含在 dijit / form / Form 小部件中,您就可以将其重置为默认值。如果所有小部件都正确包装,那么在表单上调用 reset()应该是一件简单的事情。
NB:这不适用于原生元素(即标准< input>或< textarea>字段,它们必须是dijit / form / TextBox等等)。
例如:
<form data-dojo-type="dijit/form/Form" data-dojo-id="theForm">
<label for="field1">Field 1:</label>
<input
type="text" id="field1" name="field1"
data-dojo-type="dijit/form/TextBox" value="default1"
/><br />
<label for="field2">Field 1:</label>
<input
type="text" id="field2" name="field2"
data-dojo-type="dijit/form/TextBox" value="default2"
/>
<br /><br />
<button
type="button"
data-dojo-type="dijit/form/Button"
onclick="theForm.reset();"
>Reset</button>
</form>
点击此处的重置按钮应将字段重置为:field1 =“default1”和feield2 =“default2”。
表单调用每个小部件的 reset()方法。如果您创建自己的小部件,则需要确保其 reset()方法正常工作(以及用于设置其值的 _getValueAttr()方法。)