如何更改 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/ButtonAPI文档,有一个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/