Отмена отправки формы. Фигня какаято :(
Привет. Есть следующее:
<form onSubmit="return func('1');"> ... </form> function func(x) { switch(x) { ..... case "1": ... if(...) { return false; } break; ..... } } Непойму, почему при срабатывании "if(...)" форма все равно отправляется ?:( |
используйте другие способы отмены действия по-умолчанию, ваш способ устарел.
|
Какие методы используете Вы ?:)
|
form.attachEvent \ form.addEventListener.
но можно и ограничиться form.onclick |
Отлично, обязательно почитаю о новых прогрессивных методах, но все-таки жду помощи по моему примеру, на самом деле, что не так то с ним ?
|
Цитата:
form.addEventListener('submit', function(){return false;}); |
кажись поэтому
<form onsubmit="return func('1');"> |
Цитата:
|
|
Блин, неоднократно взорвал себе мозг, нечего не понимаю, офигеть я чайник :(
В функции запускается ajax запрос, условие if() - это выдергивание нужного ответа сервера, т.е. function func(x) { switch(x) { ..... case "1": ... XMLHttp.onreadystatechange = function() { if (XMLHttp.readyState == 4) { if (XMLHttp.status == 200) { if (XMLHttp.responseText == "FAIL") { alert("Ошибка"); return false; } } } } break; ..... } } Alert вылазит, но форма все равно отправляется, как будто return false; вовсе нет. Попробывал так: function func(x) { switch(x) { ..... case "1": ... XMLHttp.onreadystatechange = function() { if (XMLHttp.readyState == 4) { if (XMLHttp.status == 200) { if (XMLHttp.responseText == "FAIL") { alert("Ошибка"); x = false; } else { x = true; } } } } break; ..... } return x; } Но за пределами XMLHttp.onreadystatechange = function() переменная x неопределена :( Как заставить работать эту конструкцию ? :( |
Цитата:
Цитата:
Она же асинхронная! ![]() |
Цитата:
Как заставить конструкцию то работать все-таки ? |
XMLHttp.onreadystatechange = function() { if (XMLHttp.readyState == 4) { if (XMLHttp.status == 200) { if (XMLHttp.responseText == "FAIL") { alert("Ошибка"); } } } } return false; |
onsubmit="return false" :dance:
|
Цитата:
e.preventDefault(); и e.stopPropagation(). которые применяются, разумеется, раздельно, но имеют общий смысл. Вам надо на форму повесить прерывание на submit и задать вектор на e.preventDefault(); с проверкой условия, которое и снимет ваш асинхронный ахакс. Например вот так addEvent(form, "submit", function(e) { if(cancel_default_submit && e.preventDefault) e.preventDefault(); return cancel_default_submit; }); |
lolka84,
вам при любых значениях нужно возвращать return false иначе форма будет отправлятся onsubmit="func('a'); return false;" |
Часовой пояс GMT +3, время: 06:02. |