onsubmit отправка формы
Всем привет.
Такой вопрос: Форма <form method="post" onsubmit="if(document.getElementById('cb').value==''){alert('!!!'); return false;}"> <input id="cb" type="checkbox" /> <input type="submit" value="отправить" /> </form> При нажатии submit отрабатывает условие в событии onsubmit, но после того как закрываю алерт-окошко данные формы все равно отправляются. Как сделать чтоб не отправлялись? |
Есть такой вариант:
<input type="button" value="Отправить" onclick="if ( … ) myform.submit(); else alert('!!!');" /> |
chelsea,
заменить if(document.getElementById('cb').value=='') на if(!document.getElementById('cb').checked) так как value = 'on' у checkbox |
похожий вопрос, поэтому решил написать в эту тему:
форма: <form name="UserEnter" action="index.php" method="POST" onsubmit="CheckFields()"> Укажите e-mail: <input type="text" name="login" id ="login" value="" size="30" /> <?php /*if ($userIsEmpty) echo (" Укажите свой e-mail");*/ if (!$userIsValid) echo (" Такой пользователь отсутствует. Пройдите процедуру регистрации!"); ?> <br/> Укажите пароль:<input type="password" name="password" id ="password" value="" size="10" /> <?php /*if ($passwordIsEmpty) echo (" Укажите свой пароль");*/ if (!$passwordIsValid) echo (" Пароль не верный!"); ?> <br/> <input type="submit" value="Вход" /> </form> Сама функция валидации: function CheckFields() { var checklogin = false; var checkpassword = false; // получение элемента login ValueLogin = document.getElementById('login'); // проверка того, что элемент login заполнен if (ValueLogin.value !='' && ValueLogin != undefined){ checklogin = true; // получение элемента password ValuePassword = document.getElementById('password'); // проверка того, что элемент password заполнен if (ValuePassword.value !='' && ValuePassword != undefined){ checkpassword = true; // submit должен выполняться только в случае заполнения всех полей document.forms["UserEnter"].submit(); } else alert('Укажите пароль!'); } else alert('Укажите свой e-mail!'); } При нажатии submit отрабатывает условие в событии onsubmit, но после того как закрываю алерт-окошко данные формы все равно отправляются. Как сделать чтоб не отправлялись? |
Delovoy, return false установите по умолчанию
forma.onsubmit = function(){ if(1<2) return true; //проверяем условие, если все верно, то отправляем, если нет - нет. return false; }; |
Спасибо, monolithed!
модифицировал функцию следующим образом: function CheckFields() { var checkpassword = false; // получение элемента login ValueLogin = document.getElementById('login'); // проверка того, что элемент login заполнен if (ValueLogin.value !='' && ValueLogin != undefined){ // получение элемента password ValuePassword = document.getElementById('password'); // проверка того, что элемент password заполнен if (ValuePassword.value !='' && ValuePassword != undefined){ checkpassword = true; } else alert('Укажите пароль!'); } else alert('Укажите свой e-mail!'); // submit должен выполняться только в случае заполнения всех полей if (checkpassword) return true; else return false; } но результат тот же ! submit формы происходит все равно. хотя я проверил - функция возвращает false может это связано с тем, что подключение скрипта выполнено из внешнего файла, посредством <script type="text/javascript" src="newjavascript.js"></script> ? а не непосредственно в коде, как в вашем примере ? |
Цитата:
<script type="text/javascript"> window.onload = function(){ document.forms[0].onsubmit = function(){ if(this.elements[0].value == 4) return true; return false; }; }; </script> <form action="" method="post"> <input type="text" /> <input type="submit" value="ok" /> 2+2 = ? </form> |
файл подключен, я проверил
модифицировал форму следующим образом <form name="UserEnter" action="index.php" method="POST" > ........................ <input type="submit" value="Вход" onclick="CheckFields()" /> </form> и скрипт function CheckFields() { var checkpassword = false; ................ // тут идет набор проверок document.forms[0].onsubmit = function(){ if (checkpassword) return true; else { alert ('FALSE'); return false; } } } alert добавил, чтобы проконтролировать по какой ветке пойдет выполнение. Выполнение идет по правильной ветке, появляется сообщение "FALSE" в отдельном окне после закрытия которого, происходит перезагрузка страницы (submit) ... может этот способ не подходит для Opera 11 ? |
у меня opera 11 и пример monilithed работает как надо. Если хочешь, чтобы тебе помогли, сделай так, чтобы твой код можно было запустить прямо на форуме (js run)
|
Спасибо, всем кто участвовал! Разобрался как сделать :)
модифицировал форму следующим образом <form name="UserEnter" id="UserEnter" action="index.php" method="POST" > ........................ <input type="button" value="Вход" onclick="CheckFields()" /> </form> т.е. изменил тип кнопки с submit на button - чтобы убрать автоматический submit формы при нажатии сама функция: function CheckFields() { var checkpassword = false; ................ // тут идет набор проверок if (checkpassword) { document.getElementById("UserEnter").submit(); } } В функции, если условие проверки выполняется - выполняю submit формы document.getElementById("UserEnter").submit(); |
Часовой пояс GMT +3, время: 03:42. |