我的问题是我有一个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等等),但它并没有成功。
答案 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");