【问题标题】:My Jquery UI dialog doesn't fire if not preceded by an alert如果前面没有警报,我的 Jquery UI 对话框不会触发
【发布时间】:2016-05-23 13:50:30
【问题描述】:

我的问题是我有一个 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 等),但没有奏效。

【问题讨论】:

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


【解决方案1】:

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

应该是这样的:

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

【讨论】:

  • 事件参数是推断出来的,所以我不必添加它。
  • @testaabalez 只是为了让我明白这一点。你从哪里推断事件参数?
【解决方案2】:

我自己解决问题。 这是因为我没有在后面添加event.preventDefault();

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

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

    • 当您经常遇到“我不得不添加延迟”时,这通常意味着需要在其他地方更改某些内容,或者您​​处理不当。
    • 我也不喜欢它,但我必须让它工作。就我而言,我不得不等待显示我从服务器获得的信息。
    • 那么您应该考虑该事件中的承诺和展示。
    猜你喜欢
    • 2016-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多