0

こんにちは、はい/いいえの場合など、ユーザーにプロンプ​​トを表示する onclick イベントがある HTML フォームがあります。no が選択されている場合、フォームの送信を停止すると想定されますが、ダイアログが非同期で呼び出されているため、処理が完了するようです。プロンプトを表示するために、jquery プラグインhttp://marcosesperon.es/apps/messi/を使用しています。

以下は私のコードのスニペットです:

    <div id="buttonCommnads">
        <button type="submit" class="k-button cancel" id="save" value="Save" title="Save inspection so it may be submitted at a later time" onclick="processCommand(COMMAND.SAVE);">Save</button>
        <button type="submit" class="k-button" id="Submit" value="Submit" title="Submit inspection" onclick="return processCommand(COMMAND.SUBMIT);">Submit</button>
        @*<button type="submit" class="k-button" id="email" title="Generate draft email for inspection photos" onclick="processCommand(COMMAND.EMAIL);">Email</button>*@
        <button type="button" class="k-button" id="cancel" title="Discard changes" onclick="location.href='@Url.Action("Index", "Inspections")'">Cancel</button>
    </div>

そしてJavaScript関数:

<script>

var COMMAND = {
    SAVE: { value: 0, name: "Save", tense: "saved" },
    EMAIL: { value: 1, name: "Email", tense: "emailed" },
    SUBMIT: { value: 2, name: "Submit", tense: "submitted" },
};

function processCommand(command) {
    if (command == COMMAND.EMAIL) {

    }
    else if (command == COMMAND.SAVE) {
        $('#Submit').val(command.name);
        $('#inspectionForm').submit();
    }
    else if (command == COMMAND.SUBMIT) {
        $('#Submit').val(command.name);
        var photosAttached = '@Model.Survey.SitePhotoes.Count()';
        console.log('processCommand: submit - begin');
        if (photosAttached >= 1) {
            console.log('processCommand: submit photos attached.');
            return true;
        } else {
            console.log('processCommand: prompt messi.');
            new Messi('Are you sure you wish to submit as no inspections photos are currently attached?', {
                title: command.name + ' Inspection',
                buttons: [{ id: 0, label: 'Yes', val: 'Y', btnClass: 'btn-success' },
                            { id: 1, label: 'No', val: 'N', btnClass: 'btn-danger' }],
                modal: true,
                callback: function (val) {
                    if (val == 'Y') {
                        console.log('processCommand: yes.');
                        return true;
                    }
                    else {
                        console.log('processCommand: no.');
                        return false;
                    }
                }
            });
        }
        console.log('processCommand: submit - end');
    }

}

私は ASP.NET MVC 4 を使用しており、Web 開発にはかなり慣れていないため、無知であることをお許しください。どんな助けでも大歓迎です。

ビンス。

4

4 に答える 4

0
event.preventDefault();

デフォルトの動作を防ぐために使用します。

より詳しい情報

于 2013-05-22T13:52:01.193 に答える
0

submitイベントのデフォルト アクションを防止することで、フォームの送信を停止します。clickキーボードを使用してフォームを送信することもできるため、イベントはあまり適切ではありません。

jQuery では次のようになります。

$('form').on('submit', function(){
    return false;
})

プロンプトは非同期であるため、通常の送信を停止しform.submit()、ユーザーが「はい」を押したときに送信を強制する必要があります。

于 2013-05-22T13:49:39.670 に答える