Los controles de formulario de asp.net son ilegibles cuando se está en un diálogo de jQuery, ¿cómo lo arreglas?

Tengo una espinosa Tengo una página de formularios web asp.net. En la página tengo una etiqueta div que he configurado para ser utilizada como diálogo jQuery. En la div hay algunos controles de jQuery. Aparece el cuadro de diálogo que se abre y al hacer clic en uno de los botones comienza la devolución. Cuando la página se estaba devolviendo, el código subyacente no ha estado leyendo los valores en los controles. Por supuesto, un poco de profundización en el html revela que el diálogo toma mi div y lo mueve al final de la página html FUERA DE LA etiqueta de mi formulario asp.net. Urk!

¿Cómo diablos puedo evitar esto?

No es que realmente ayude la situación por mi código de diálogo está aquí:

$("#dialog-copy").dialog({ autoOpen: false, height: 200, width: 400, modal: true, resizable: false, buttons: { 'Cancel': function () { $(this).dialog('close'); }, 'Yes': function () { $(this).dialog('close'); $("[id*=btnCopy]")[0].click(); } }, open: function () { $(":button:contains('Yes')").addClass("blue"); } }); $("[id*=btnCopy]").live('mousedown', function (e) { e.preventDefault(); $("#dialog-copy").dialog('open'); }); 

Y una etiqueta div típica (que se mueve fuera de mi etiqueta de formulario) se ve así:

 

Please enter a schedule number:

Al hacer clic en ‘Sí’ se activa el botón que llama a la devolución de datos.

Es un problema conocido, debe adjuntarlo al formulario como este y sus controles normales de .NET pueden devolverse:

  open: function () { $(this).parent().appendTo("form"); $(":button:contains('Yes')").addClass("blue"); } 

ACTUALIZACIÓN para nuevas versiones de jQuery:

  $('#yourDIv').dialog({ ....., appendTo: $('form'), .... }); 

Haga que la función del botón de diálogo agregue un campo oculto al formulario con el nombre correcto, es decir, use la entrada en el cuadro de diálogo como referencia antes de enviar el formulario.

  buttons: { 'Cancel': function () { $(this).dialog('close'); }, 'Yes': function () { $(this).dialog('close'); $('#dialog-copy').find('input').each( function() { var $this = $(this); $('form').append(''); }); $("[id*=btnCopy]")[0].click(); } }, 

Podrías probar esto. Mantenga una entrada html regular dentro del cuadro de diálogo y, justo antes de hacer clic en el botón de devolución, mueva el valor dentro de la entrada de texto html a asp: TextBox o incluso a asp: HiddenInput.

Me gusta:

 $("#dialog-copy").dialog({ autoOpen: false, height: 200, width: 400, modal: true, resizable: false, buttons: { 'Cancel': function () { $(this).dialog('close'); }, 'Yes': function () { $(this).dialog('close'); $('input[id$=_txtSchNo').val($('#dummy').val()); $("[id*=btnCopy]")[0].click(); } }, open: function () { $(":button:contains('Yes')").addClass("blue"); } }); $("[id*=btnCopy]").live('mousedown', function (e) { e.preventDefault(); $("#dialog-copy").dialog('open'); }); 

Y el marcado:

 
.... ...