如果前面没有警报,我的 jQuery UI 对话框不会打开

Posted

技术标签:

【中文标题】如果前面没有警报,我的 jQuery UI 对话框不会打开【英文标题】:My jQuery UI Dialog doesn't open if not preceded by an alert 【发布时间】:2016-08-12 17:53:44 【问题描述】:

在我的 html 页面的开头,我的对话框的定义:

<script type="text/javascript">
$(function() 
  $( "#dialog-confirm" ).dialog(
    autoOpen: false,
    resizable: true,
    height:180,
    width:300,
    modal: true,
    buttons: 
      "Yes": function() 
        $( this ).dialog( "close" );
      ,
      "No": function() 
        $( this ).dialog( "close" );
      
    
  );
);
</script>

<div id="dialog-confirm" title="Test dialog">
  <p><span class="ui-icon ui-icon-alert" style="float:left; margin:0 7px 20px 0;"></span>You can press Yes or No</p>
</div>

在我的 HTML 页面结束之后,我要打开对话框的位置(inputText 是由 Id 获得的输入):

inputText.addEventListener("keydown", function() 
  if (event.which == 13 || event.which == 10)
  
    alert("test");
    $(document).ready(function() 
        $( "#dialog-confirm" ).dialog( "open" );
    );
  
);

我的问题是,如果我不输入 alert("test");,当我输入输入时,我的对话框将不会打开。

我可以做些什么来消除警报并保持正确的操作?

【问题讨论】:

【参考方案1】:

您应该通过这样做来防止警报的默认行为:

inputText.addEventListener("keydown", function() 
  event.preventDefault();
  if (event.which == 13 || event.which == 10)
  
    alert("test");
    $(document).ready(function() 
        $( "#dialog-confirm" ).dialog( "open" );
    );
  
);

键 13 和 10 用于回车键,如果你不阻止默认行为,那么当你的对话框显示时,第一个按钮将被聚焦,回车键将触发点击此按钮。

所以,通过 event.preventDefault(); 来防止点击

【讨论】:

以上是关于如果前面没有警报,我的 jQuery UI 对话框不会打开的主要内容,如果未能解决你的问题,请参考以下文章

BLoC 中的逻辑应该如何触发一次性 UI 警报,例如对话框或快餐栏?

带有常规 Div 的 JQuery UI 对话框堆叠顺序

未发送 Jquery UI 对话框中的输入?

离开页面前的 Jquery 未保存更改警报

Javascript关闭警报框

iOS 警报“UI 已被系统取消”