jQuery UI对话框 - 输入密钥应该等于单击

时间:2014-06-21 01:25:44

标签: jquery jquery-ui jquery-dialog

我希望能够按下" ENTER"让对话框执行与提交按钮相同的操作。

我在这里找到了类似的问题:Submit jQuery UI dialog on <Enter>。我在代码中添加了一些解决方案,并没有解决问题。

这是我到目前为止所做的:

按钮:

<button id="myButton">Execute Tasks</button>

对话框本身:

<div id='myDialog' title="New Task(s):">
    <p>Enter the name of the tasks you wish to execute</p>
        <form>
            <label for="name">
                <input type="text" name="name" id="name" />
            </label> 
        </form>
</div>

内部脚本标记:

$('#myButton').click( function() {
    $( "#myDialog" ).dialog({
        open: function(){

            $("#myDialog").unbind('submit');
            $("#myDialog").submit(function() {
            $("#myDialog").parents('.ui-dialog').first().find('.ui-button').first().click();
            return false;
            });
        },
        buttons: {
            "Run tasks": function() { .... },
            "Cancel":function() { $(this).dialog("close"); };
        },
    });
});

2 个答案:

答案 0 :(得分:5)

您可以在打开的对话框中绑定表单提交事件。在文本框中按Enter将自动触发表单提交。

您还可以在单​​击“运行任务”按钮时触发提交事件。

jsFiddle:http://jsfiddle.net/CodingDawg/dk7hT/

$('#myButton').click(function () {
  $("#myDialog").dialog({
        open: function () {
            $(this).off('submit').on('submit', function () {
                //Run tasks
                //$(this).dialog('close'); //You can Close the dialog after running the tasks.
                return false;
            });
        },
        buttons: {
            "Run tasks": function () {
                $(this).find('form').submit();
            },
                "Cancel": function () {
                $(this).dialog("close");
            }
        }
    });
});

答案 1 :(得分:4)

要实现您的目标并不难,但您的代码并非您所要求的。我会尽量简化它:

此代码将在提交表单时执行:

$( "#MyForm" ).submit(function( event ) {
  alert( "Handler for .submit() called." ); // Your code should be here
  event.preventDefault();
});

查看我给jquery选择器的ID - $( "#MyForm" ) - 它是 FORM ELEMENT - 您没有指定表单ID。

如果你想将ENTER键绑定到提交表单,即使你需要这个代码:

$(document).keypress(function(event) {
    if (event.which == 13) {
        event.preventDefault();
        $("#MyForm").submit();
    }
});

我会重新编辑您的HTML,以便您可以轻松了解它的外观:

<div id='myDialog' title="New Task(s):">
    <p>Enter the name of the tasks you wish to execute</p>
    <form id="MyForm">
        <label for="name">My Label</label> 
        <input type="text" name="name" id="name" />    
    </form>
</div>