2009-10-23 22 views
17

giriş alanları yayınlanmadan değildir ve ben neden emin değilim ... Jquery UI Dialog içinde giriş gönderilmiyor mu? Benim iletişim kutusunda

i mac firefox ve safari test ettik

ve pencereler aynı sonuçlarla & firefox IE Bu yüzden tarayıcı olduğunu düşünmüyorum ve iletişim kutusunu devre dışı bırakırsam alanlar düzgün yayınlanıyor.

jquery ui belgelerini yeniden okudum ve yanlış yaptığım şeyi bulamıyorum ... İletişim kutusunun girişi desteklememesi olası görünmüyor.

burada ben kullanıyorum kod yoğunlaştırılmış sürümü: olağan dışı

<script type="text/javascript"> 
$(document).ready(function(){ 
    $("#dialog").dialog({ 
    autoOpen: false, 
    buttons: { 
    "OK": function() { 
    $(this).dialog('close'); 
    } 
    } 
    }); 
    $("#publishSettings").click(function(){ 
    $("#dialog").dialog('open'); 
    }); 
}); 
</script> 

<form method="POST" action="publish.php"> 
<input type="button" id="publishSettings" value="Publish Settings"> 
<div id="dialog"> 
    Publish Date 
    <input type="text" name="publishOn"><br> 
    Unpublish Date 
    <input type="text" name="unPublishOn"> 
</div> 
<input type="submit" name="pubArticle" value="Publish"> 
</form> 

Hiçbir şey, değil mi? Neden bu benim için çalışmıyor?

Teşekkürler!

cevap

32

JQuery iletişim kutusunu açtığı zaman, bu formun dışına taşır. senin durumunda temelde

jQuery UI Dialog with ASP.NET button postback

:

var dlg = $("#dialog").dialog({ 
    autoOpen: false, 
    buttons: { 
    "OK": function() { 
    $(this).dialog('close'); 
    } 
    } 
    }); 
dlg.parent().appendTo($("#yourformId")); 

düzeltmek gerekir

İşte bunun için bir çözüm.

+0

Tricky :) umut! Bu soruyu gördüm, ama okumayı bitirmedim çünkü asp.net'e özgü olduğunu düşündüm. hoppala. Teşekkürler! – neil

+4

jQuery UI v1.10.0'dan beri bunu doğrudan appendTo özelliğini kullanarak yapabilirsiniz - http://api.jqueryui.com/dialog/#option-appendTo –

+0

Bu aptalcadır. JQuery daha kolay yapması gerekiyordu. Yardımın için teşekkürler. –

1

Eminim ki jQuery UI, Diyalog bölümünü dom içindeki normal konumundan koparır ve sonra farklı bir yere taşır. Bu, giriş öğenizi form ana öğeden alır. Form öğesi olmayan bir form gönderemezsiniz, bu yüzden başarısız olur. publishSettings düğmesi açılır pencerede olmayabilir gerekiyorsa

<div id="dialog"> 
<form method="POST" action="publish.php"> 
<input type="button" id="publishSettings" value="Publish Settings"> 
    Publish Date 
    <input type="text" name="publishOn"><br> 
    Unpublish Date 
    <input type="text" name="unPublishOn"> 
<input type="submit" name="pubArticle" value="Publish"> 
</form> 
</div> 

, o zaman formun dışına taşımak olabilir ve sadece göndermek olayı değerini yakalamak ve:

ben html yeniden yazma öneririm bir şey gönderilmeden önce onu gizli bir giriş elemanı olarak ekleyin.

Şansın en iyisi.

0

html5 uyumlu tarayıcılarda (IE değil, en son ff, krom ve safari desteği), giriş alanlarınızda "form" özniteliğini ayarlayabilirsiniz ve bu sayede istediğiniz yere yerleştirebilirsiniz. Ben de bu sorunu yaşadım ve neden iletişim girdileri göndermediğini anlamak için biraz zaman harcadım.

0

Aynı sorunu yaşadım ve ("user2100025 gibi)," kodunuza "appendTo = '#yourform',” ifadesini ekledik. İşte kodum ve iyi çalışıyor.

Ben helo birisi

<script> 
 
    $(function() { 
 
    $("#dialog").dialog({ 
 
     autoOpen: false, 
 
     resizable: false, 
 
     modal: true, 
 
     appendTo: '#myform', 
 
     buttons: { 
 
     "Yes"function() { 
 
      $('#myform').submit(); 
 
     }, 
 
     'No' function() { 
 
      $(this).dialog('close'); 
 
     } 
 
     } 
 
    }); 
 

 
    $("#button").click(function() { 
 
     $("#dialog").dialog("open"); 
 
    }); 
 
    }); 
 
    </script>

İlgili konular