Диалог jquery вмешивается в свойство флажка .net input - всегда false - PullRequest
2 голосов
/ 15 января 2010

Я наткнулся на следующую страницу asp.net, содержащую

<div id='test'>
  <input type='checkbox' id='ch1' name='ch1' runat=server />
  <input type="button" id="view_test" />
</div>

и следующий код jquery для отображения этого div в диалоговом окне

$("#view_test").click(function() {
    $("#test").dialog({ show: 'slide', width: 600, title: 'View Check' });
});

Если была нажата кнопка view_test, инициализирующая диалоговое окно, перед тем, как форма запишет обратно, свойство ch1.Checked в .Net всегда имеет значение False Однако, если вы просто отправляете сообщение без инициализации диалога, оно работает как положено.

Это самая странная вещь ...

Ответы [ 2 ]

3 голосов
/ 15 января 2010

Диалог jquery перемещается в DOM, когда он создан. После создания диалога попробуйте переместить его обратно в тег формы:

$("#test").parent().appendTo($("form:first"));

Редактировать - вот более полный код:

<script type="text/javascript">
    $(function() {

        $("#view_test").click(function() {
            $("#test").dialog({ show: 'slide', width: 600, title: 'View Check' });
            $("#test").parent().appendTo($("form:first"));
        });
    });
</script>

<body>
    <form id="form1" runat="server">
    <div>
        <div id="test">            
            <input type="checkbox" id="ch1" name="ch1" runat="server" />test
            <input type="button" id="view_test" value="click" />            
        </div>    
        <asp:Button ID="btnSubmit" runat="server" Text="submit" 
            onclick="btnSubmit_Click" />    
    </div>
    </form>
</body>

Код позади:

public partial class Tests_Test : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {

    }
    protected void btnSubmit_Click(object sender, EventArgs e)
    {
        Response.Write(ch1.Checked.ToString());
    }
}
1 голос
/ 15 января 2010

Я не знаю плагин диалога JQuery, но я сталкиваюсь с этим часто, с каждым Lightbox / Thickboxclone, который я видел до сих пор. Или:

  • Сценарий скопирует элементы DOM в область Lightbox вместо перемещения их.

  • Сценарий переместит элементы DOM в область Lightbox, но не вернет их в исходное положение, поместив их за пределы формы .

Моя ставка в том, что последнее случается.

Возможные обходные пути:

  • поместить форму в диалоговое окно (если возможно)

  • изменение сценария диалога, чтобы он сохранял ссылку на родительский элемент в объектах DOM, которые он перемещает, и перемещал их обратно в нужное место, когда диалог закрывался.

  • Или используйте очень простое решение, которое предлагает Fehays.

...