2010-04-06 14 views
6

Sto provando a verificare se un input di modulo ha un valore (non importa quale sia il valore) in modo che possa aggiungere il valore all'URL di azione su submit se lo fa esistere. Devo aggiungere il nome del parametro prima di aggiungere il valore, e lasciare un nome param vuoto come "P =" senza alcun valore rovina la pagina.Come verificare se l'input del modulo ha valore

Ecco il mio codice:

function getParam() { 

// reset url in case there were any previous params inputted 

    document.form.action = 'http://www.domain.com' 

    if (document.getElementById('p').value == 1) { 
     document.form.action += 'P=' + document.getElementById('p').value; 
    } 

    if (document.getElementbyId('q').value == 1) { 
     document.form.action += 'Q=' + document.getElementById('q').value; 
    } 

} 

e la forma:

<form name="form" id="form" method="post" action=""> 
    <input type="text" id="p" value=""> 
    <input type="text" id="q" value=""> 
    <input type="submit" value="Update" onClick="getParam();"> 
</form> 

ho pensato che il valore di impostazione == 1 farebbe un semplice esiste, non esiste controllo indipendentemente da ciò che il valore inviato era, ma credo di essermi sbagliato.

Inoltre, sto usando le istruzioni if, ma credo che sia un codice errato, poiché non ho un altro. Forse, usando un'istruzione switch, anche se non sono sicuro di come configurarlo. Forse:

switch(value) { 
    case document.getElementById('p').value == 1 : 
     document.form.action += 'P=' + document.getElementById('p').value; : 
    case document.getElementById('q').value == 1 : 
     document.form.action += 'Q=' + document.getElementById('q').value; break; 
} 
+0

Non sarà presentando nulla se i vostri campi di input non hanno nomi. – kennebec

+0

true, ma in questo caso il modulo è solo lì per aggiornare l'url e dal momento che sto afferrando i valori di tali input per id, non è davvero necessario. – Choy

+0

Ti rendi conto che puoi cambiare il tuo metodo in 'GET', e i valori saranno aggiunti alla querystring? Dovresti essere in grado di gestire i valori vuoti lato server senza problemi; cosa intendi * incasina la pagina *? – RedFilter

risposta

13
var val = document.getElementById('p').value; 
if (/^\s*$/.test(val)){ 
    //value is either empty or contains whitespace characters 
    //do not append the value 
} 
else{ 
    //code for appending the value to url 
} 

P.S .: La sua migliore di controllo contro value.length perché ' '.length = 3.

+1

Questo sembra funzionare in modo opposto. Quando lascio il campo vuoto, si aggiunge P = senza valore (dato che è vuoto) e quando si digita qualcosa, non aggiunge nulla. – Choy

+0

:) si dovrebbe aggiungere quando la clausola 'if' restituisce' false' –

+1

Perché non basta invertire if, poiché un ramo sarà vuoto ?, ad es. 'if (!/^ \ s * $ /. test (val)) {// ...' – CMS

Problemi correlati