2013-10-01 6 views
0

У меня есть форма, когда форма отправлена, я назову одну функцию javascript и обработаю ее, чтобы сформировать обработчик.Как вызвать две функции на форме submit?

<form action="subscribe.php" onsubmit="return form_check(this)" method="post"> 
<input type="text" value=""> 
<input type="submit" value="click"> 
</form> 

Все работает отлично, теперь я хочу отправить то же поле формы в другую Javascript функции, так что я пытался, как это на отправить код

<form action="subscribe.php" 
onsubmit="return (form_check(this) & another_script(this))" method="post"> 

Добавлено & в onsubmit, но функция не срабатывание при нажатии кнопки. Я думаю, что это связано с action="subscribe.php" в форме.

Я хочу отправить значение формы в другую функцию JavaScript. как я могу это достичь?

+0

Разделите их с запятой, а не амперсанд. Я не уверен, как это будет работать, если обе функции возвратят что-то другое. –

+0

Какую функцию вы хотите вернуть? 'form_check' или' another_script'? –

+0

Почему функция 'another_script' внутри' form_check' просто отсутствует? – Colandus

ответ

1

С помощью jQuery вы можете поймать форму отправки. Событие submit отправляется элементу, когда пользователь пытается отправить форму.

HTML

<form id="myForm">...</form> 

JQuery

$("#myForm").submit(function(event){ 
    event.preventDefault(); 

    var this = something; 

    myFunctionA(this); 
    myFunctionB(this); 
}); 

var myFunctionA = function(this){ 
    // Function operation 
} 

var myFunctionB = function(this){ 
    // Function operation 
} 
0

ли эта работа?

onsubmit="another_script(this); return form_check(this);" 

Конечно, всегда лучше использовать ненавязчивые обработчики событий.

1

Есть несколько ответов в зависимости от того, что вы пытаетесь сделать.

Если вы хотите просто запустить обе функции, а не возвращать ничего, вы можете просто сделать:

onsubmit="form_check(this); another_script(this);" 

Если вы хотите, чтобы всегда запустить another_script но возвращения значение form_check, вы можно сделать:

onsubmit="another_script(this); return form_check(this);" 

Если вы хотите только запустить another_script если form_check возвращает true (и возвращает истину, если оба form_check и another_script возвращение true), вы можете сделать:

onsubmit="return form_check(this) && another_script(this);" 

Однако, поставив слишком много кода в onsubmit обработчика обычно не рекомендуется. Вы должны привязать обработчики событий после использования DOM или jQuery.

+0

Ваш последний пример эквивалентен 'return (form_check (this) && another_script (this))' поскольку '&&' является оператором короткого замыкания, он не будет выполнять 'another_script (this)', если 'from_check (this)' возвращает 'true ' –

+0

@Austin - Предполагается, что' another_script' всегда возвращает true. Он может возвращать 'undefined', что приведет к поведению. Я сделаю это. –

+0

Я бы также добавил, что если вы хотите запустить оба и проверить оба варианта, вы можете сделать '(form_check (this) & another_script (this))? true: false' или '!! (form_check (this) & another_script (this))' –

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