Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Не закрывается диалоговое окно (https://javascript.ru/forum/jquery/35623-ne-zakryvaetsya-dialogovoe-okno.html)

Jopses 16.02.2013 13:47

Не закрывается диалоговое окно
 
Ещё один вопрос, который не даёт мне покоя.
Есть диалоговое окно, которое формирует в своём теле таблицу с данными о записи (и ссылками на неё) + встроенный календарик для выбора даты записи.

Проблема в следующем: Окно вызывается первый раз, всё корректно отображается и работает. Жму Esc или по крестику -> закрывается. Запускаю вновь (страницу не перегружаю. Если перегрузить, то вновь корректно отработается первое закрытие), пытаюсь закрыть, ноль эмоций. В FireBag отследил, что увеличивается при каждом нажатии z-index. Повесил на диалоговое окно stack, z-index перестал расти, но результат не изменился, окно не закрывается.

Вешал принудительно:

close: function(ev, ui) {
                $('input',this).val('');


Реакции ноль!

В чём проблема, понять не могу. Прямо напасть какая-то.
Если кто сталкивался с подобным или есть предположения, в чём проблема, прошу помочь

Ниже код на само окно. Хотя есть ли смысл в его публикации


function open_history(obj) {
	var alias = $(obj).parents('li').attr('alias');
	  if(($("#history_"+alias).length > 0)) {
	      //$("#history_"+alias).toggle();
	      var tdiv = $("#history_"+alias);
	      $(tdiv).parent().show();
	  } else {
	      var tdiv = $('<div/>',{id: "history_"+alias, class: "history", title: cams[alias].name+" - История записей:"});
	      $(tdiv).dialog({width: 'auto',height: 'auto', stack: false});
	      var datepick = $('<input/>',{id: "dp_"+alias, class: "datepick",value: new Date().toLocaleFormat('%d-%m-%Y')});
	      $(datepick).appendTo(tdiv);
	      $(datepick).datepicker({
		  dateFormat: "dd-mm-yy",
		  showOtherMonths: true,
		  showButtonPanel: true,
		  selectOtherMonths: true,
		  showOn: "button",
          
		  buttonImage: cam_control+"/icons/calendar.png",
		  buttonImageOnly: true,
		  onSelect: function(dateText, inst) { request_history(alias,$(datepick).val(), tdiv); }
	      });
	      $(datepick).datepicker($.datepicker.regional[ 'ru' ] );
	      $('<div/>',{id: "hrefresh_"+alias,alias: alias,class: "hrefresh"}).appendTo(tdiv);
	      $("#hrefresh_"+alias).click(function() {
		  if(undefined != $("#thistory_"+alias)) {$("#thistory_"+alias).remove();}
		  //replaceWith(Загрузка)
		  request_history(alias,$(datepick).val(), tdiv);
		  //(Загрузка).remove()
		  //show_history(tdiv,alias,$(datepick).val());
	      });
	      request_history(alias,$(datepick).val(), tdiv);
	  }
	  //show_history(tdiv,alias,$(datepick).val());
    }

ksa 18.02.2013 13:44

Цитата:

Сообщение от Jopses
В чём проблема, понять не могу.

Начнём с работающего тестового примера...

<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<!--
<link rel="stylesheet" type="text/css" href="tmp.css" />
-->
<style type="text/css">
#box {
	position: fixed;
	top: 100px;
	left: 100px;
	width: 200px;
	min-height: 22px;
	border: 1px solid;
	display: none;
}
#box.on {
	display: block;
}
#box > div {
	margin-right: 22px;
}
#box > button {
	position: absolute;
	top: 1px;
	right: 1px;
	width: 20px;
	height: 20px;
	padding: 0;
}
</style>
<script type="text/javascript">
$(document).ready(function (){
	$('.btn').click(function (){
		$('#box').addClass('on');
	});
	$('#box > button').click(function (){
		$('#box').removeClass('on');
	});
});
</script>
</head>
<body>
<a href='#' class='btn'>Test</a>
<div id='box'>
	<div>Text</div>
	<button>x</button>
</div>
</div>
</body>
</html>


Что именно не работает у тебя?

DjDiablo 18.02.2013 22:01

<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8" />
  <title>jQuery UI Dialog - Default functionality</title>
  <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.1/themes/base/jquery-ui.css" />
  <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
  <script src="http://code.jquery.com/ui/1.10.1/jquery-ui.js"></script>
  <link rel="stylesheet" href="/resources/demos/style.css" />
  <script>
  $(function() {
     $( "#dialog" ).dialog({
     "autoOpen": false
   });
   $('#open').on('click',function(){
    $( "#dialog" ).dialog('open');
  });
    
  });
  </script>
</head>
<body>
 
<div id="dialog" title="Basic dialog">
  <p>This is the default dialog which is useful for displaying information. The dialog window can be moved, resized and closed with the 'x' icon.</p>
</div>
 
<button id="open"> ОТКРЫТЬ</button>
 
</body>
</html>

Jopses 19.02.2013 12:52

При повторном запуске окна, оно ни как не риагирует на закрытие. Проще говоря не закрывается ни какими способами

ksa 19.02.2013 13:01

Jopses, где твой тестовый пример? Мы свои показали - они работают.

Jopses 19.02.2013 13:53

А Вы юморист) Если бы я смог собрать хотя бы приблизительный пример, основываясь на функциональности этого окна) Но увы и Ах! Просто может кто встречался с подобным и знает как заглушить этот баг не прибегая к переписыванию с нуля)

DjDiablo 19.02.2013 15:54

Сам ты юморист )))

плагин как я полагаю из jquery UI.

ты даже непотрудился разобрать мой пример.
Если посмотриш, то я инициализировал плагин один раз.
А затем вызываю его при помощи команды open. Вызываю столько раз, сколько мне потребуется, и без каких либо проблем.

ты же блин ( судя по коду который показал ) пытаешся инициализировать плагин каждый раз, для каждого вызова. Open неиспользуешь совсем.

Неужели разницы невидно.
И это небаг, это неправильное использование плагина.

Jopses 19.02.2013 16:14

И не надо так ругаться) Спасибо что указали на мою погрешность и опрометчивость. Проанализирую, прикручю, посмотрю что получится


Часовой пояс GMT +3, время: 06:55.