2010-04-06 18 views
6

Estoy tratando de verificar si un formulario ingresado tiene algún valor (no importa cuál sea el valor) para poder agregar el valor a la URL de la acción en el envío si lo hace existe. Necesito agregar el nombre del parámetro antes de agregar el valor, y simplemente dejar un nombre de param en blanco como "P =" sin ningún valor enreda la página.Cómo comprobar si la entrada del formulario tiene el valor

Aquí está mi código:

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; 
    } 

} 

y 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> 

pensé valor de ajuste == 1 haría existe una forma simple, no existe registro de entrada, independientemente de lo que el valor enviado fue, pero creo que estoy equivocado.

Además, estoy usando sentencias if, pero creo que es un código incorrecto, ya que no tengo otro. Tal vez, usando una declaración de cambio, aunque no estoy seguro de cómo configurarlo. Tal vez:

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

Usted no va a presentar nada si sus campos de entrada no tienen nombres. – kennebec

+0

cierto, pero en este caso el formulario solo está ahí para actualizar la url y como estoy obteniendo los valores de esas entradas por id, no es realmente necesario. – Choy

+0

¿Te das cuenta de que puedes cambiar tu método a 'GET', y los valores se agregarán a la cadena de consulta? Debería poder manejar los valores vacíos del lado del servidor sin problemas; ¿A qué te refieres con * arruinar la página *? – RedFilter

Respuesta

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 .: Su mejor que la comprobación contra value.length porque ' '.length = 3.

+1

Esto parece funcionar al revés. Cuando dejo el campo en blanco, agrega P = sin valor (ya que está en blanco) y cuando escribo algo, no agrega nada. – Choy

+0

:) se supone que debes anexar cuando la cláusula 'if' se evalúa como' falsa' –

+1

¿Por qué no invertir el if, ya que una rama estará vacía ?, p. 'if (!/^ \ s * $ /. test (val)) {// ...' – CMS

Cuestiones relacionadas