【问题标题】:multiple submit widgets, detecting which button was activated多个提交小部件,检测哪个按钮被激活
【发布时间】:2013-06-11 16:42:31
【问题描述】:

我正在使用 dojo 1.9。我有一个带有 2 个提交按钮的表单,我想检测哪个按钮被激活,导致表单提交事件。

在 api 中,我发现小部件有一个 focused 属性,当它们被单击时,或者当它具有焦点时按下回车键时,它似乎是真的。

dojo 是否在他们的 api 中提供了一些东西来检测哪个按钮(或表单控件)导致表单提交?我的方法似乎有效,但我会觉得使用为此目的的东西会更舒服。我的第一个想法是检查提交事件对象并查看 srcElement,但 dojo 似乎总是将其设置为表单元素

我做了一个jsfiddle demo 来展示我的尝试。

html

<form id="prefs-form">
    <div>
        <input id="name">
        <button id="save" type="button">Save</button>
        <button id="delete" type="button">Delete</button>
    </div>
</form>

js

require(["dijit/form/Button", "dijit/form/TextBox", "dijit/form/Form", "dojo/domReady!"], function(Button, TextBox, Form){

    var saveBtn = new Button({
        type: 'submit',
    }, "save");

    //make delete button
    var deleteBtn = new Button({
        type: 'submit'
    }, "delete");


    var textBox = new TextBox({
    }, "name");

    var form = new Form({
        onSubmit: function(evt){
            dojo.stopEvent(evt);
            console.log(saveBtn.get("focused"));
            console.log(deleteBtn.get("focused"));
            console.log(textBox.get("focused"));
        }
    }, "prefs-form");    
});

【问题讨论】:

    标签: dojo


    【解决方案1】:

    不要制作提交按钮,只需制作常规按钮,连接到按钮上的 onclick 事件,执行您需要的操作,然后以编程方式提交表单。

    on(saveBtn, 'click', function(evt) {
        console.log('save');
        form.submit(); 
    });
    

    http://jsfiddle.net/cswing/uNusq/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-10
      • 2013-01-15
      • 1970-01-01
      • 2012-10-02
      • 2021-08-13
      • 1970-01-01
      • 2014-07-15
      • 1970-01-01
      相关资源
      最近更新 更多