2010-04-06 3 views
6

Я пытаюсь проверить, имеет ли вход формы какое-либо значение (не имеет значения, какое значение), чтобы я мог добавить значение к URL-адресу действия для отправки, если это произойдет существовать. Мне нужно добавить имя параметра перед добавлением значения и просто оставить пустое имя параметра, например «P =», без какого-либо значения помешает странице.Как проверить, имеет ли вход формы значение

Вот мой код:

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

} 

и форма:

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

Я думал, устанавливая значение == 1 будет делать простой существует, не существует проверки, независимо от того, какой представленной стоимости был, но я думаю, я ошибаюсь.

Кроме того, я использую инструкции if, но я считаю, что это плохой код, так как у меня нет другого. Возможно, используя оператор switch, хотя я не уверен, как я это установлю. Возможно:

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

Вы не будете представлять что-либо, если ваши поля ввода не имеют имен. – kennebec

+0

true, но в этом случае форма доступна только для обновления URL-адреса, и поскольку я захватываю значения этих входов по id, это не обязательно. – Choy

+0

Вы понимаете, что можете изменить свой метод на 'GET', и значения будут добавлены к строке запроса? Вы должны иметь возможность обрабатывать пустые значения на сервере без проблем; что вы имеете в виду * помешает странице *? – RedFilter

ответ

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 .: Лучше, чем проверка против value.length, потому что ' '.length = 3.

+1

Это похоже на противоположную работу. Когда я оставляю поле пустым, он добавляет P = без значения (поскольку он пуст), и когда я ввожу что-то, он ничего не добавляет. – Choy

+0

:) Предполагается, что вы должны добавить, когда выражение 'if' оценивается как' false' –

+1

Почему бы просто не инвертировать if, поскольку одна ветвь будет пустой ?, например. 'if (!/^ \ s * $ /. test (val)) {// ...' – CMS

Смежные вопросы