Как проверить перед отправкой? - PullRequest
1 голос
/ 18 июня 2011

Мне нужно проверить, нажал ли пользователь кнопку, прежде чем я выполню предварительную отправку.

Сейчас я использую $(document).ready(function(){ и хочу вставить в нее код, чтобы проверить, если кнопкабыла нажата или нет.

Эта «кнопка» это просто div, с фоновым изображением, которое меняет изображение, если вы нажимаете там.Поэтому мне нужно добавить переменную, чтобы я мог сделать оператор if, верно?

Я знаю, что в JQ есть функция protectDefault, но безуспешно пытался с ней работать.

спасибо запомощь

Ответы [ 4 ]

5 голосов
/ 18 июня 2011
jQuery('#yourForm').bind('submit',function(e){

    //do your test
    //if fails 
    e.preventDefault();

});
0 голосов
/ 18 июня 2011

Добавить еще один элемент ввода, который хранит информацию о том, нажата ли кнопка

<div id="divElement">
<input type="hidden" name="buttonIsClicked" value="0" />
</div>

и установите обработчик события для div.

$("#divElement").click( function() {
  $(this).children("input[name=buttonIsClicked]").val(1);
});

Добавление входного элемента внутри div делает код более быстрым, так как он просто должен искать только под элементом div, а не по всему DOM. Если вы хотите разместить элемент ввода снаружи, то вы также можете оптимизировать свой код, используя

$(this).parent().find("input[type=buttonIsClicked]");

при заполнении формы вы можете проверить это

$(myFormElement).submit(function() {
  if($(this).find("input[name=buttonIsClicked]").val() == 0)
    return false;
  //proceed here if the button div is clicked
}
0 голосов
/ 18 июня 2011

Отвечает ли это на ваш вопрос?

$(document).ready(function(){
    $('#yourDiv').click(function() {
        $('#yourForm').submit();
    });
});

Я добавил обработчик щелчков на кнопке div.Когда она нажата, она отправляет форму.Таким образом, вам не нужно иметь кнопку отправки в вашей форме, просто ваша кнопка div

0 голосов
/ 18 июня 2011
$('#form_element').submit(function() {
    return false;  // do this if you don't want to submit the form
});

Вы можете добавить столько событий, сколько хотите. Форма не будет отправлена, если одно или несколько событий отправки возвращают false;

...