2013-07-04 3 views
14

Sto riscontrando un problema nel riattivare un input dopo che è stato disabilitato sul caricamento della pagina.jQuery .prop ("disabled", false) non abilita un input

Sto utilizzando due ingressi per accettare due date, ma voglio che il secondo input non sia abilitato fino a quando il primo non ha un valore.

<div id="date1" data-role="fieldcontain"> 
<label for="date1-start" id="date1-startlbl">Start Date</label> 
<input name="date1-start" id="date1-start" type="date" data-role="datebox"data-options='{"mode": "calbox", "overrideDateFormat": "%Y-%m-%d", "beforeToday": true}' data-theme="a" onchange="showdate()"/> 
<label for="date1-end" id="date1-endlbl">End Date</label> 
<input name="date1-end" id="date1-end" type="date" data-role="datebox" data-options='{"mode": "calbox", "overrideDateFormat": "%Y-%m-%d", "beforeToday": true}' data-theme="a" onchange="datechart()"/> 
</div> 

Il secondo ingresso è stato disabilitato con successo sul caricamento della pagina con.

$("#date1-end").prop("disabled", true); 

La prima data ha un evento onchange che chiama la seguente funzione

function showdate() 
{ 
    if ($("#date1-start").val() != null) 
     { 
      if ($("#date1-end").val() != "") 
       { 
        datechart(); 
       } 
      else 
       { 
        $("#date1-end").prop("disabled", false); 
        $("#date1-end").trigger('change'); 
       } 
     } 
} 

La funzione viene richiamata e prop ("disabilitata", false) quando raggiunge incendi senza errori, ma i resti di ingresso Disabilitato. Il trigger ('change') che sto usando è un tentativo di aggiornare l'elemento ma lo stesso problema esiste senza di esso.

Ho provato diverse varianti di .attr dalla versione precedente di Jquery ma ho anche lo stesso problema.

Sto utilizzando jQuery 1.9.1, Jquery-mobile 1.3.1 e 2.7.0 PhoneGap

Qualsiasi aiuto avermi nella giusta direzione sarebbe apprezzato.

+0

possibile duplicato di [Cercando di disattivare un campo di input di testo se il campo viene lasciato vuoto precedente] (http://stackoverflow.com/questions/9929817/trying-to-disable-a-text- campo-input-se-campo-precedente-è-lasciato-vuoto) – Gajotres

risposta

7

esempio di lavoro: http://jsfiddle.net/d9vzs/

Questo non è il modo di abilitare disabilitare elementi di input jQuery Mobile.

si può fare con questo funzioni:

$("input").textinput("disable"); 


$("input").textinput("enable"); 

documentazione ufficiale: http://api.jquerymobile.com/textinput/#method-disable

+0

Questo ha funzionato alla grande. Avrebbe dovuto esaminare i documenti mobili di Jquery anziché solo Jquery. Grazie. – RichardMc

+1

Qual è la differenza tra le tue due funzioni? –

+0

@JeffPuckettII C'era un errore di battitura e ho modificato la seconda funzione in "enable". – hargobind

6

Prova con removeAttr come

$("#date1-end").removeAttr("disabled"); 

Si può anche provare con prop come

$("#date1-end").prop("disabled",false); 
+0

Scusa avrei dovuto elaborare con .attr che ho provato anche questo, ma sto ancora ricevendo lo stesso problema. – RichardMc

+0

Prova anche il mio altro ans – Gautam3164

+1

Questo era quello che avevo inizialmente utilizzato, ma ho lo stesso problema. Ho letto che potrebbe essere necessario aggiornare l'elemento dopo averlo abilitato. C'è qualche verità in questo? – RichardMc

7

avuto lo stesso problema qualche tempo fa:

$("#date1-end").prop("disabled", null); 

@ risposta di Gautam3164 è anche un bene .

-4

Prop viene utilizzato solo per ottenere il valore e impostare il valore. Fare riferimento questo http://api.jquery.com/prop/

$("#date1-end").prop("disabled", false); 
+2

Scorri la pagina per la quale hai fornito il link, sotto vedrai che il puntello è utilizzato anche per impostare il valore. –