submit только при условии ...

zul

Новичок
submit только при условии ...

Как сделать такую вещь.
есть select, по умолчанию равный 1
и есть input text, который по умолчанию ничему не равен.
надо отправить форму при условии что select не равен 1 или если он всё-же равен 1, то чтобы input text был чем-то заполнен.
if (document.start.id_city.value <> '1' or document.start.name_city.value not null)
вот насчёт null не уверен, как оно в js реализуется?
 

Mr.Ak

Guest
function _submit(){
el=document.f;
if((el.id_city.value!=1)&&(el.name_city.value=='')){
return false;
}
return true;
}

<form name=f method=POST action='your_script.php' onsubmit='return _submit()'>
<input name=id_sity value=''>
<select><option value=1>1</option><option value=2>2</option><select>
...................................................
Твои поля
<input type=submit>
</form>
 

zul

Новичок
но тогда при выборе select'а, но при невведённом input'e форма не отправляется
 

Mr.Ak

Guest
условие при котором форму не посылаем:
select==1 И input==''
там ошибка. торможу. вроде
 

zul

Новичок
Не стал новую тему добавлять, решил тут-же спросить.. Вроде бы, если нужно проверить заполнены ли все поля формы, можно использовать массив формы, как сделать такую проверку? Надо отправлять форму только при условии, что все поля заполнены.
 

Mr.Ak

Guest
function _submit(){
for(i=0;i<document.f.elements.length;i++){
if((document.f.elements.value!='')&&(document.f.elements.type=="text")){
return true;
}
}
alert('Необходимо выбрать хотя бы одно наименование');
return false;
}


<form .... onsubmit='return _submit() '>
...
 

zul

Новичок
проверка на то, что тип элементов является text включает в себя <textarea> ?

p.s. Спасибо! =)
 

Mr.Ak

Guest
нет вроде. проверь:

сделай форму с текстареа и вставь алерт с выводом типа или writeln и все увидишь
 

zul

Новичок
Так вот, установил я эту проверку, но сейчас обнаружил, что при хотя бы одном заполненном поле, форма отправляется =(
Что-то стало быть не так, а что - я так разобраться и не сумел. В цикле проверяется заполнено ли поле и является ли оно текстовым, в этом случае возвращается true... Хм.. Есть у кого какие мысли на этот счёт?
 

Ямерт

The Old One
Так вот, установил я эту проверку, но сейчас обнаружил, что при хотя бы одном заполненном поле, форма отправляется
МрАковскую проверку? Ну разумеется. Всё правильно.
В цикле проверяется заполнено ли поле и является ли оно текстовым, в этом случае возвращается true
Полагаю, сэр сам ответил на свой вопрос :)
 

Bocha

Guest
если у тебя есть поле textarea, то оно не попадает под эту проверку, надо добавить проверку document.f.elements.type=="textarea"
далее эту проверку я бы организовал по другому, а именно

function _submit(){
for(i=0;i<document.f.elements.length;i++){
if((document.f.elements.value!='')&&((document.f.elements.type=="text")||(document.f.elements.type=="textarea"))){
excode= true;
}
else {
excode=false;
alert('Необходимо выбрать хотя бы одно наименование');
break;
}
}
return excode;
}


<form .... onsubmit='return _submit() '>
...
 

Mr.Ak

Guest
function _submit(){
for(i=0;i<document.f.elements.length;i++){
if((document.f.elements.value=='')&&(document.f.elements.type=="text")){
alert('Заполните все поля!');
return false;
}
}
return true;
}
 

zul

Новичок
Спасибо всем! =)

Изначально вопрос стоял так, что необходимо чтобы все поля были заполены, абсолютно все.
 

zul

Новичок
вот только беда теперь, даже если все поля заполнены, форма не отправляется ((
 

zul

Новичок
<form name=anketa action="update.php" onsubmit="return ch_submit()">
<input type=text name=name>
<input type=text name=sname>
<select name=sex>
<option value=m>male</option>
<option value=f>female></option>
</select>
</form>
 
Сверху