Диалоговое окно: как ожидать закрытия?
При удалении записи в таблице для защиты от случайного нажатия, открывается диалоговое модальное окно.
Перед открытием окна выбранная строка выделяется другим цветом. Теперь, после открытия окна, надо ожидать кода нажатой кнопки: "Ок" или "Cancel" и соответственно сбросить выделение строчки. Только почему-то действие происходит сразу, не ожидая действия пользователя в модальном окне. Как заставить ожидать завершения открытия диалогового окна? Или передать в функцию закрытия окна дополнительные данные?
function deleteRecord(numrow, id, name){
$('#tr'+numrow).css('background-color','red');
$('#ondelete').dialog({ title: name });
$('#ondelete').dialog('open');
$('#tr'+numrow).css('background-color','#ffffff'); // выполняется сразу! а надо после закрытия мод.окна
}
Или как передать в функцию внешние значения?
$("#ondelete").dialog({
autoOpen: false,
resizable:false,
modal:true,
buttons:{
"Удалить выбранную запись?": function(id){ // в функцию передать ID???
isdel=true;
$(this).dialog( "close" );
},
Cancel: function(){
isdel=false;
$('#tr'+id).css('background-color','#FFFFFF'); // сюда бы передать id
$(this).dialog( "close" );
}
}
});
Спасибо! |
Veterinar,
<!DOCTYPE HTML>
<html>
<head>
<title>dialog demo</title>
<meta charset="utf-8">
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css">
<script src="http://code.jquery.com/jquery-1.9.1.js"></script>
<script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
<script>
$(function ()
{
$('.open').click(function ()
{
var name = 'test', id = 100, numrow = 17;
$('#ondelete').dialog("option", "title", name);
$('#ondelete').dialog("option", "buttons",
{
"Удалить выбранную запись?": function(e) {
alert(id)
// в функцию передать ID???
isdel = true;
$(this).dialog("close");
},
"Cancel": function(e) {alert(id);
isdel = false;
// $('#tr'+id).css('background-color','#FFFFFF'); // сюда передать id
$(this).dialog("close");
}
}
);
$('#ondelete').on( 'dialogclose', function(event, ui){
alert(numrow)
//$('#tr'+numrow).css('background-color','#ffffff'); // выполняется сразу! а надо после закрытия мод.окна
});
$('#ondelete').dialog('open');
}
);
$("#ondelete").dialog(
{
autoOpen: false,
resizable: false,
modal: true
}
);
}
);
</script>
</head>
<body>
<div id="ondelete" title="Basic dialog" class="image">
</div>
<button id="opener" class="open" data-image='#dialog'>Open Dialog</button>
</body>
</html>
|
мда... через жопу, в смысле, через глобальную переменную, передал.
Тока так чот не нравится... Как бы в функции на события диалогового окна передавать по-нормальному? |
рони, спасибо!
Так и сделал до вашего ответа ))) |
Veterinar,
вы код свой непокажите? а то что-то меня сомнения терзают ))) 14 строка в у меня в коде просто для примера |
рони, ой, спасибо! Не, всё работает! )))
|
рони, подскажите, будьте добры, после добавления строки в таблицу, я хочу её при необходимости убрать.
Количество записей в таблице после добавления показывается тоже самое, что и было и, соответственно, по индексу удаление не срабатывает.
$('#editDataRefs').after('<tr><td>Ку-ку</td></tr>');
alert('Записей='+document.getElementById('editDataRefs').getElementsByTagName('tr').length);
Alert выводит то же количество строк, что и было до добавления новой. Спасибо! |
Veterinar,
то есть вы добавили строки после таблицы а ищите их в таблице? |
Veterinar,
$('#editDataRefs tr:last').after('<tr><td>Ку-ку</td></tr>'); |
рони, спасибо!
Да, ступил я :( |
| Часовой пояс GMT +3, время: 13:15. |