2010-03-11 5 views
0

У меня есть форма с 2 текстовых входов и 2 переключателей, как показано ниже:Javascript вопрос о формах

<form id="form1" method="get" onSubmit="exec()" action="default.html"> 
    <label>First input<label> 
    <input type="text" id="input1"/><br /> 
    <label>Second input</label> 
    <input type="text" id="input2"/><br /> 
    <label>Radio button 1</label> 
    <input type="radio" id="radio1"/> 
    <label>Radio Button 2</label> 
    <input type="radio" id="radio2"/><br /> 
    <input type="submit" value="Search"> 
</form> 

Когда пользователь нажимает кнопку Search метод exec() будет вызываться, и это то, что я ищут помощь. Как видно из приведенного выше кода, действие по умолчанию указывает на страницу с именем default.html, но это может измениться в зависимости от поля ввода, введенного пользователем, и выбранной кнопки радио. Так что я думаю, что мой exec() метод должен выглядеть следующим образом:

function exec() 
{ 
    if(document.getElementById("radio1").checked) && 
    if(document.getElementById("input1").**has text entered by user** 
    { 
     document.getElementById("form1").setAttribute("action", "AnotherPage.html") 
    } 
} 

Я думаю, что код у меня там должны работать, то есть, если я знал, что синтаксис должен быть там, где я вступил «имеет текст, введенный пользователем» , Может ли кто-нибудь сказать мне, что этот синтаксис должен быть? Правильно ли я делаю это или есть лучший способ?

Заранее спасибо.

ответ

2

document.getElementById ("input1"). имеет текст, введенный пользователем

должен быть

document.getElementById("input1").value.length > 0 

Я настоятельно рекомендую тратить 10 минут, глядя на jQuery. Просто укажите jquery.js на своей странице, и вы устраните следующую головную боль, которая несовместима с браузером.

+0

Огромное спасибо – Ruth

0

Это должно работать:

document.getElementById("input1").value.length > 0 
+0

Большое спасибо – Ruth

0

собственности value сохраняет текст, введенный в поле. Вам нужно обрезать пробелы перед проверкой его длину, так что-то подобное может работать для вас:

document.getElementById("input1").value.replace(/^\s*|\s*$/g, '').length > 0 
0
function exec() 
{ 
    if(document.getElementById("radio1").checked && document.getElementById("input1").value!='') 
    { 
     document.getElementById("form1").setAttribute("action", "AnotherPage.html") 
    } 
} 

Я переформатировать ваш IF заявление.

Будьте осторожны, полям нужен атрибут NAME, если они будут отправлены на сервер, а не только идентификатор.

1

Несмотря на не зная, как обнаружить текст, ваше заявление, если откусил ...

function exec() 
{ 
    if (document.getElementById("radio1").checked && document.getElementById("input1").value != "") 
    { 
     document.getElementById("form1").setAttribute("action", "AnotherPage.html") 
    } 
} 

Есть некоторые дополнительные случаи для обработки, хотя ... что, если пользователь выбрал вариант 1, но не введенный текст? Вы можете изменить свой onSubmit="exec()" на onSubmit="return exec()" и return false на вашу функцию exec, если определенные условия не выполняются.

+0

Спасибо, что это полезно – Ruth

0

Это также может быть

if(document.getElementById("input1").value){ 
    /* code */ 
} 

, потому что пустая строка будет оценивать ложь.

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