如何更改 Dojo 框架中的按钮类型属性
How to change the button type attribute in Dojo Framework
目前我正在使用 Dojo 框架开发应用程序。
我想要 当我点击 Install 按钮时,应该使用 dojo 框架将该按钮的属性从 type = "button"
更改为 type = "submit"
。
这是我的代码。
<button id="btn_vcenterconfiguration_Ok" data-dojo-type="dijit.form.Button" class="submitform" type="button" value="Install">
<script type="dojo/method" data-dojo-event="onClick" data-dojo-args="e">
form = getForm(this);
doSubmit1({
form: form,
event: e,
url: '{% url "vcp_home" %}',
});
</script>
我的 html 页面在页面呈现后显示<span widgetId='btn_vcenterconfiguration_Ok'>
。这就是为什么 document.getElementById('btn_vcenterconfiguration_Ok').type = "submit"
。代码不工作。
提前致谢 :) :)
嗯,根据dijit/form/Button
API文档,有一个type
属性可以设置,例如:
this.set('type', 'submit'); // 'this' is your widget instance
但是,这个 属性 似乎只使用了一次,即在小部件的 buildRendering
生命周期阶段呈现模板时。因此,不支持开箱即用地更新 属性,但您可以自己实现:
declare("custom.TypeButton", [Button], {
_setTypeAttr: function(type) {
this.type = type;
this.valueNode.setAttribute('type', type);
}
});
这将扩展 Button
,但我们使用 _setTypeAttr
.
为 type
属性使用自定义 setter
现在,您不再使用 data-dojo-type="dijit.form.Button"
,而是使用 data-dojo-type="custom.TypeButton"
并将您的代码修改为:
<button id="btn_vcenterconfiguration_Ok" data-dojo-type="dijit.form.Button" class="submitform" type="button" value="Install">
<script type="dojo/method" data-dojo-event="onClick" data-dojo-args="e">
form = getForm(this);
doSubmit1({
form: form,
event: e,
url: '{% url "vcp_home" %}',
});
this.set('type', 'submit'); // Change button type
</script>
</button>
这应该可以解决问题。可以在 JSFiddle 上找到完整的示例:http://jsfiddle.net/3g46kpch/
目前我正在使用 Dojo 框架开发应用程序。
我想要 当我点击 Install 按钮时,应该使用 dojo 框架将该按钮的属性从 type = "button"
更改为 type = "submit"
。
这是我的代码。
<button id="btn_vcenterconfiguration_Ok" data-dojo-type="dijit.form.Button" class="submitform" type="button" value="Install">
<script type="dojo/method" data-dojo-event="onClick" data-dojo-args="e">
form = getForm(this);
doSubmit1({
form: form,
event: e,
url: '{% url "vcp_home" %}',
});
</script>
我的 html 页面在页面呈现后显示<span widgetId='btn_vcenterconfiguration_Ok'>
。这就是为什么 document.getElementById('btn_vcenterconfiguration_Ok').type = "submit"
。代码不工作。
提前致谢 :) :)
嗯,根据dijit/form/Button
API文档,有一个type
属性可以设置,例如:
this.set('type', 'submit'); // 'this' is your widget instance
但是,这个 属性 似乎只使用了一次,即在小部件的 buildRendering
生命周期阶段呈现模板时。因此,不支持开箱即用地更新 属性,但您可以自己实现:
declare("custom.TypeButton", [Button], {
_setTypeAttr: function(type) {
this.type = type;
this.valueNode.setAttribute('type', type);
}
});
这将扩展 Button
,但我们使用 _setTypeAttr
.
type
属性使用自定义 setter
现在,您不再使用 data-dojo-type="dijit.form.Button"
,而是使用 data-dojo-type="custom.TypeButton"
并将您的代码修改为:
<button id="btn_vcenterconfiguration_Ok" data-dojo-type="dijit.form.Button" class="submitform" type="button" value="Install">
<script type="dojo/method" data-dojo-event="onClick" data-dojo-args="e">
form = getForm(this);
doSubmit1({
form: form,
event: e,
url: '{% url "vcp_home" %}',
});
this.set('type', 'submit'); // Change button type
</script>
</button>
这应该可以解决问题。可以在 JSFiddle 上找到完整的示例:http://jsfiddle.net/3g46kpch/