2013-03-25 12 views
5

Sono bloccato su quello che sembra un problema banale e probabilmente mi prenderò a calci per mancarmi questo .. In ogni caso, il mio problema è che non riesco a ottenere il valore da un campo di testo .JQuery val() restituisce vuoto

HTML:

<form> 
     <label for="">Enter Username:</label> 
     <input id="usernameText" type="text" size="30" /> 
     &nbsp;&nbsp;<input type="button" value="Generate" onclick="generateQuery(); return  false;" /> 
</form> 

Javascript:

<script type="text/javascript"> 

     var username = $("#usernameText").val(); 

     function generateQuery(){ 

      alert(username); 

     } 
</script> 

ho fatto il seguente if (jQuery) {.. e ha fatto in modo jQuery è caricato.

Nell'avviso viene visualizzata una finestra di dialogo vuota.

Se ho incluso lo $(document).ready(); nel mio script, la funzione generateQuery non viene chiamata. Qualche idea sul perché ..?

<script type="text/javascript"> 

    $(document).ready(function(){ 
     var username = $("#usernameText").val(); 

     function generateQuery(){ 

      alert(username); 

     } 
    });  
</script> 
+0

@PSR: L'ho menzionato nelle note. – kaizenCoder

risposta

10

Assegnare la variabile all'interno della funzione.

function generateQuery(){ 
    var username = $("#usernameText").val(); 
    alert(username); 
} 

quanto riguarda la tua altra domanda, : "Se ho incluso il .ready $ (document)();.? Nel mio script la funzione di generi non viene chiamato Qualsiasi idea del perché .."

Ciò accade a causa dell'ambito. Si inserisce generateQuery all'interno di una funzione anonima quando si aggiunge un gestore document.ready e pertanto non è visibile al codice button onclick="generateQuery()".

3

Qui sarà chiamata mentre la pagina è loading.So ogni volta che la pagina venga caricata la casella di testo è empty.Try di scrivere all'interno di una funzione.

function generateQuery(){ 
    var username = $("#usernameText").val(); 
    alert(username); 
} 

Quando si scrive in document.ready sarà cal; l mentre la pagina è loading.If è necessario il valore del nome utente quindi chiamare in modo esplicito.

-1

dove stai chiamando la funzione ????

Penso che avete bisogno:

<script type="text/javascript"> 

    $(document).ready(function(){ 
     generateQuery(); 


    });  

function generateQuery(){ 
    var username = $("#usernameText").val(); 
      alert(username); 

     } 
</script> 
+0

Viene chiamato onchange del campo di input. – judda

1

Il valore viene derivato la prima volta. Quindi quando la pagina viene caricata per la prima volta.

<script type="text/javascript"> 
     function generateQuery(){ 
      var username = $("#usernameText").val(); 
      alert(username); 

     } 
</script> 
0

Qui si definisce la funzione è necessario chiamare la funzione al fine di ottenere che si avvii l'uso di questa linea generateQuery(); per richiamare la funzione.

Problemi correlati