2010-04-06 16 views
6

Próbuję sprawdzić, czy dane wejściowe formularza mają jakąkolwiek wartość (nie ma znaczenia, jaka jest wartość), aby można było dodać wartość do adresu URL działania w przypadku przesłania, jeśli nie istnieć. Muszę dodać nazwę parametru przed dodaniem wartości, a pozostawienie pustej nazwy parametru, takiej jak "P =" bez żadnej wartości, spowoduje przeniesienie strony.Jak sprawdzić, czy dane wejściowe formularza mają wartość

Oto mój kod:

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

} 

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

myślałem ustawiania wartości == 1 zrobi proste istnieje, nie istnieje kontrolę niezależnie od złożonego wartości było, ale myślę, że się mylę.

Używam również instrukcji if, ale uważam, że to zły kod, ponieważ nie mam innego. Być może, używając instrukcji switch, chociaż nie jestem pewien, jak to ustawić. Może:

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

Nie będzie złożenie niczego, jeśli pola wejściowe nie mają nazwy. – kennebec

+0

prawda, ale w tym przypadku formularz jest tylko po to, aby zaktualizować adres URL, a ponieważ przechwytywam wartości tych danych wejściowych według id, to naprawdę nie jest konieczne. – Choy

+0

Zdajesz sobie sprawę, że możesz zmienić swoją metodę na 'GET', a wartości zostaną dodane do kwerendy? Powinieneś być w stanie obsługiwać puste wartości po stronie serwera bez problemów; co masz na myśli * zbija z góry stronę *? – RedFilter

Odpowiedz

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 .: Lepiej niż sprawdzanie przeciwko value.length ponieważ ' '.length = 3.

+1

To wydaje się działać odwrotnie. Kiedy zostawiam puste pole, dołącza ono P = bez wartości (ponieważ jest puste) i kiedy coś wpisuję, nic nie dołącza. – Choy

+0

:) Powinno się dołączyć, gdy klauzula 'if' zwraca wartość 'fałsz' –

+1

Dlaczego nie odwrócić if, ponieważ jedna gałąź będzie pusta ?, np. 'if (!/^ \ s * $ /. test (val)) {// ...' – CMS

Powiązane problemy