1

私は道場1.9を使用しています。2 つの送信ボタンがあるフォームがあり、どのボタンがアクティブになってフォーム送信イベントが発生したかを検出したいと考えています。

API で、ウィジェットには、focusedクリックされたとき、またはフォーカスがあるときに Enter キーが押されたときに true と思われるプロパティがあることがわかりました。

dojo は、どのボタン (またはフォーム コントロール) がフォームの送信を引き起こしたかを検出するために、API で何かを提供していますか? 私の方法は機能しているようですが、これを目的としたものを使用する方が快適だと思います。私の最初のアイデアは、submit イベント オブジェクトをチェックして srcElement を確認することでしたが、dojo ではこれが常にフォーム要素に設定されているようです。

私が試したことを示すjsfiddleデモを作成しました。

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");    
});
4

1 に答える 1

1

送信ボタンを作成する代わりに、通常のボタンを作成し、ボタンの onclick イベントに接続し、必要なことを行ってからプログラムでフォームを送信します。

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

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

于 2013-06-11T18:20:24.597 に答える