2012-05-15 1 views
0

Хорошо, у меня сильная головная боль с простотами - я знаю, что я почти там, но не могу понять, что это правильно работает. У меня есть SimpleModal диалог, который имеет несколько динамически создаваемых дивы внутри него, такие какПроблемы с манипулированием divs в всплывающем диалоговом окне с помощью простого шаблона - Дальнейшее редактирование

<html> 
<head> 
<!-- Confirm CSS files --> 
<link type='text/css' href='css/confirm.css' rel='stylesheet' media='screen' /> 
</head> 

<body> 
<div id='container'> 
<h1>Test Page</h1> 
<div id='content'> 
    <div id='confirm-dialog'> 
     Page Content Goes Here 
    </div> 

<!-- modal content --> 
<div id='confirm'> 
    <div class='header'><span>Header Text</span></div> 
    <div class='message'> 
    <div id='optionDiv0'><input type='radio' id='options' name='options' value='0' />Option0</div> 
    <div id='optionDiv1'><input type='radio' id='options' name='options' value='1' />Option1</div> 
    <div id='optionDiv2'><input type='radio' id='options' name='options' value='2' />Option2</div> 
    </div> 
    <div class='buttons'> 
    <div class='yes'>OK</div> 
    </div> 
    </div> 
</div> 
<!-- Load JavaScript files --> 
<script type='text/javascript' src='scripts/jquery.js'></script> 
<script type='text/javascript' src='scripts/jquery.simplemodal.js'></script> 

<script type="text/javascript"> 
jQuery(function ($) { 
$('#confirm-dialog input.confirm, #confirm-dialog a.confirm').click(function (e) { 
    e.preventDefault(); 
    confirm("", function() { 
     for(var k = 0; k <= 3; k++) { 
      if(options[k].checked) { 
      var ele = document.getElementById("optionDiv" + k); 
      ele.style.display = "none;"; 
      //alert("Stop Here"); 
      } 
     } 

     }); 
}); 
}); 

function confirm(message, callback) { 
$('#confirm').modal({ 
    closeHTML: "<a href='#' title='Close' class='modal-close'>x</a>", 
    position: ["20%",], 
    overlayId: 'confirm-overlay', 
    containerId: 'confirm-container', 
    containerCss: { 
         height: 300, 
         width: 450, 
         backgroundColor: '#fff', 
         border: '3px solid #ccc' 
        }, 

    onShow: function (dialog) { 
     var modal = this; 

     $('.message', dialog.data[0]).append(message); 

     // if the user clicks "yes" 
     $('.yes', dialog.data[0]).click(function() { 
      // call the callback 
      if ($.isFunction(callback)) { 
       callback.apply(); 
      } 
      // close the dialog 
      modal.close(); // or $.modal.close(); 
     }); 
    } 
}); 
} 
</script> 
</body> 
</html> 

В коде мыши, я пытаюсь сделать так, когда пользователь нажимает на одну из кнопок радио, затем щелкает " OK ', этот элемент больше не отображается во всплывающем окне. Если я следую этому коду с alert("Stop here"); (показано в приведенном выше коде, закомментирован), я могу увидеть, что div исчез из всплывающего окна. Но как только я очищу окно предупреждения (или если я прокомментирую его, чтобы он никогда не запускался), в следующий раз, когда я активирую диалог, div, который я скрыл, снова появляется. Как я могу скрыть его, чтобы он оставался скрытым при следующем включении диалога или это возможно? Заранее спасибо.

ОКОНЧАТЕЛЬНЫЙ РЕДАКТ: найдено решение для диалогового окна, возвращающегося в исходное состояние при каждом его открытии. Я вставил это в чуть выше коды Jquery, и он работает как шарм:

<script> $.modal.defaults.persist = true; </script> 

Нашел на этом сайте в другом потоке, как часть другого вопроса. Спасибо всем, кто помог.

+0

Невозможно ответить на ваш вопрос, не видя свой код. Это пустая трата времени в текущем состоянии. :( – gdoron

+0

Я показал код, который применим, я не думаю, что кто-то действительно хочет увидеть всю страницу, на которой это происходит. Я сократил ее для краткости. Есть ли что-то конкретное, что не позволяет вам думать, что это пустая трата время? – piratepops

+1

Подумайте, вы покажете нам HTML и одну допустимую строку, которая скрывает элемент. Это выглядит хорошо. Проблемы в другом месте. Я не могу сказать вам, где проблема, но ее здесь нет. – gdoron

ответ

1

Ваш код еще не выглядит полным для меня, но для confirm функции обратного вызова

confirm("", function(){ 
    $('#confirm input[type=radio]').each(function(){ 
     if($(this).is(':checked')) 
      $(this).parent().empty(); 
    }); 
}); 

Как это?

+0

Не совсем - я изменил «checkbox» на «radio», поскольку они являются переключателями. Это скрывает проверочный переключатель, но не связанный с ним текст - и как только диалог очищается, при следующем открытии радиокнопка возвращается в исходное состояние. Я хочу, чтобы он (и его текст) оставался в следующий раз, когда откроется диалог. – piratepops

+0

Обновлено мой ответ – Madbreaks

+0

Я считаю, что это то, что я искал. Благодаря! – piratepops

 Смежные вопросы

  • Нет связанных вопросов^_^