【问题标题】:jQuery UI Dialog - Enter key should equal a clickjQuery UI 对话框 - Enter 键应该等于单击
【发布时间】:2014-06-21 01:25:43
【问题描述】:

我希望能够按“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"); };
        },
    });
});

【问题讨论】:

    标签: jquery jquery-ui jquery-dialog


    【解决方案1】:

    您可以在对话框打开时绑定表单提交事件。在文本框中按 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");
                }
            }
        });
    });
    

    【讨论】:

      【解决方案2】:

      实现你想要做的并不难,但你的代码不是你想要的。我会尽量简化:

      提交表单时会执行这段代码:

      $( "#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>
      

      【讨论】:

      • 您不必绑定按键事件。由于文本框在表单中,Enter 应该会自动提交表单。
      • 但前提是您的焦点在文本文件中。我将它从“输入”元素更改为“文档”元素,因此每个输入键都会提交表单。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-10-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多