2009-11-25 10 views
6

Ho una finestra di dialogo modale JQuery con 2 ingressi JQuery UI di datapicker. Il mio problema è che quando si apre la finestra di dialogo il calendario è già aperto sulla pagina. Non sono sicuro che sia perché si sta concentrando, ma il risultato netto è che viene visualizzato nella finestra di dialogo aperta. Ecco il mio codice:datepicker in JQuery UI Dialog mostra il calendario nella finestra di dialogo aperta

<script type="text/javascript"> 

     $(function() { 
      $('input').filter('.datepicker').datepicker({ 
       changeMonth: true, 
       changeYear: true 
      }); 
     }); 

</script> 

<div id="rpt_dialog" title=""> 
    <form id="rptDlgForm" action="/EquipTrack/ShowReport" method="post">   
    <center> 
    <div id="rpt_dlg_results"></div> 
    </center> 
    <div style="float:left; padding-left:50px">From:</div> 
    <input class="datepicker" id="dtReportFrom" name="dtReportFrom" type="text" style="float:left"> 
    <div style="float:left; padding:0 5px 0 15px">To:</div> 
    <input class="datepicker" id="dtReportTo" name="dtReportTo" type="text" style="float:left"> 
    <br /> 
    <br /> 
    <p><input type="submit" value="Show report" id="btnSubmit" style="float:left;padding-right:10px"/> 
    <input type="button" onclick="CloseReportDialog()" value="Close" id="Button2" /></p> 
    <p></p> 
    <input type="hidden" id="hdnReportName" name="hdnReportName" value=""/> 
    </form>   
</div> 

risposta

13

ho avuto questo lavoro, ma la disattivazione delle datepickers appena prima di aprire la mia finestra e poi in occasione di un evento aperto della finestra di dialogo. Il codice è:

$('#dtReportFrom').datepicker('disable'); 
    $('#dtReportTo').datepicker('disable'); 


    jQuery('#rpt_dialog').dialog('open'); 


    $(function() { 
     $("#rpt_dialog").dialog({ 
      bgiframe: true, 
      width: 540, 
      modal: true, 
      autoOpen: false, 
      resizable: false, 
      open: function(event, ui) { 
       $(ui).find('#dtReportFrom').datepicker('enable'); 
       $(ui).find('#dtReportTo').datepicker('enable'); 
     }, 
      close: function(event,ui) { 
      }     
     }) 
    }); 
5

Quando si inserisce il campo del datario all'inizio della finestra di dialogo, viene aperto automaticamente. È possibile inserire un input nascosto all'inizio della finestra di dialogo.

<input type="text" style="width: 0; height: 0; top: -100px; position: absolute;"/> 
+0

Questa era la soluzione per me perché i miei calendari erano in un usercontrol .NET incluso nella finestra di dialogo. Quindi non c'era un modo semplice per fare la soluzione accettata. – FirstDivision

Problemi correlati