Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > Отправка формы только по клику на submit кнопку


Автор: maxipub 16.11.2012, 13:49
Как сделать сабж? Пробую обрабатывать onsubmit формы, но как узнать что именно клик по submit кнопке вызвал данное событие?

Автор: Aliance 16.11.2012, 15:00
Как-то так:
Код

<form onsubmit="return false;">
    <input type="submit" onclick="this.form.onsubmit = function() {};" />
</form>


Это больше псевдокод, но принцип понятен должен быть.

Автор: ksnk 16.11.2012, 15:10
У меня что-то такое в коде

Код

<form class="ajax" ... >
   <input name="submit" type="hidden">
...

Код

$("form.ajax").submit(

    $.post($(this).action,$(this).serialize(),function(){
       ...
    }
)

$(document).on('click','input[type="submit"]',function(){
   var name=$(this).attr('name');
   $('input[name="submit"]',$(this).parents('form').eq(0)).attr('value',name);
})



Это точно нужно на javascript узнавать? На php несложно понять на какую кнопку кликнули по появлении параметра с именем кнопки в POST'е

Автор: maxipub 16.11.2012, 15:32
Aliance, ну принцип и так понятен. А вот сделать не получается. smile 

Делаю так:

Код

onclick="this.form.onsubmit = function() {return true;};"


Но форма отправляется все равно в любом случае, не только по клику на кнопку. Про onsubmit="return false;" конечно же, не забываю. Что не так делаю?

Цитата(ksnk @  16.11.2012,  15:10 Найти цитируемый пост)
Это точно нужно на javascript узнавать?

Да.

ЗЫ: все отлично работает, если вынести сабмит-кнопку за пределы формы и прописать а-ля:

Код

onclick="document.forms['my_form'].submit();"


Вот только без JavaScript такая кнопка вообще работать не будет, что совсем не есть гуд.

Автор: Aliance 16.11.2012, 15:55
Цитата(maxipub @  16.11.2012,  16:32 Найти цитируемый пост)
Но форма отправляется все равно в любом случае, не только по клику на кнопку.

А как она тогда отправляется?

Автор: maxipub 16.11.2012, 17:44
Цитата(Aliance @  16.11.2012,  15:55 Найти цитируемый пост)
А как она тогда отправляется?

При нажатии Enter в input c type="text", к примеру. Мне надо чтоб такого не было, только через нажатие на кнопку.

Но при этом чтобы форма сохраняла свою работоспособность без JavaScript.

Автор: ksnk 16.11.2012, 17:56
Цитата(maxipub @  16.11.2012,  17:44 Найти цитируемый пост)
Но при этом чтобы форма сохраняла свою работоспособность без JavaScript. 

Ну дык, так и надо было объяснять 

Нужно нарисовать нормальную форму, которая исправно работает без Javascript. Потом на JS отменить ей сабмит, навесить на "submit-кнопки" функции реального сабмита с установкой имени нажатой кнопки и все.

Примерно как у меня в примере.

Автор: maxipub 16.11.2012, 18:07
Цитата(ksnk @  16.11.2012,  17:56 Найти цитируемый пост)
Примерно как у меня в примере. 

Я плохо знаю JavaScript, но знаю. jQuery же вообще не бум-бум. Так что ваш пример вообще ни о чем не говорит. smile

Автор: Aliance 16.11.2012, 18:55
Код

<input type="text" name="text" onkeydown="if(event.keyCode == 13){return false;}" />

Автор: maxipub 16.11.2012, 19:00
Aliance, тоже об этом думал. Но кто знает сколько вообще у формы способов быть отправленной? smile

Автор: ksnk 16.11.2012, 19:49
http://jsfiddle.net/AHAxw/

?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)