如果没有警报,则我的Jquery UI对话框不会触发

时间:2016-05-23 13:50:31

标签: javascript jquery jquery-ui alert jquery-ui-dialog

我的问题是我有一个Jquery UI对话框,如果没有警报,则不会触发。

我页面开头的对话框的div:

    <div id="dialog-confirm" title="Modification de la date de fin du projet">
  <p><span class="ui-icon ui-icon-alert" style="float:left; margin:0 7px 20px 0;"></span>Keep or change ?</p>
</div>

触发对话框的事件:

  nameInput.addEventListener("keydown", function() {
    if (event.which == 13 || event.which == 10)
    {
      alert("ok");
      $( "#dialog-confirm" ).dialog( "open" );
    }
  });

我的Jquery UI对话框:

  $(function() {
    $( "#dialog-confirm" ).dialog({
      autoOpen: false,
      resizable: true,
      height:190,
      width:450,
      modal: true,
      buttons: {
        "Keep": function() {

          keep();

          $( this ).dialog( "close" );
        },
        "Change": function() {

          change();

          $( this ).dialog( "close" );
        }
      }
    });

我搜索并尝试了许多不同的方法(例如使用document.ready等等),但它并没有成功。

3 个答案:

答案 0 :(得分:0)

我解决了自己的问题。 这是因为我没有在{/ p>之后添加event.preventDefault();

if (event.which == 13 || event.which == 10) { ... }

只有当用户在键盘上输入Enter键(键13和10用于Enter键)时才会打开对话框,因此,对话框会立即关闭,因为用户键入Enter并且对话框的第一个按钮被聚焦,这样Enter键就会触发第一个按钮,并在执行第一个按钮代码后关闭对话框。

答案 1 :(得分:0)

似乎您忘记将事件对象传递给nameInput的事件处理程序。警报呼叫应该与此无关。

它应该是这样的:

nameInput.addEventListener("keydown", function(event) { // forgot event param here
    if (event.which == 13 || event.which == 10)
        {
            // alert("ok");
            $( "#dialog-confirm" ).dialog( "open" );
        }
});

答案 2 :(得分:0)

我遇到了类似的问题并加了延迟。尝试:

$("#dialog-confirm" ).delay(2000).dialog("open");