Вопрос по jquery – Функция отправки jQuery не работает должным образом

1

У меня есть несколько вопросов с функцией отправки jQuery.

здесь рабочая среда

jQuery: 1.7.2, хром (18.0.1025.168 м).

Есть 2 проблемы.

первая:

мои коды такие

HTML

<code><form id="test" action="..." method="post">
     <input type="text" />
     <input type="submit">
</form>
</code>

JQuery

<code>$('#test').submit(function(){
      return false;
})
</code>

проблема в том, что он отлично работает в Firefox и Opera, но Chrome.

2ст:

HTML: как указано выше.

JQuery:

<code>$('#test').submit(function(){
      if(...)
         alert(something..);
      return false;
})
</code>

он не работает в Firefox, Opera и Chrome. это всегда вызывает form.submit почему.

Я очень смущен этим. кто может понять это спасибо!

Принятый ответ неверен.return false долженpreventDefault. Read this Я мог бы написать полный ответ здесь, если хотите. gdoron
Можете ли вы опубликовать свое заявление ЕСЛИ? Nathan Taylor
Спасибо, если вы напишите полный ответ здесь, я буду признателен. jame
утверждение IF очень просто, это не проблема. например, если (flag) значение флага является логическим значением. jame

Ваш Ответ

4   ответа
1

ательского кода, который конфликтует с поведением обработчика отправки (например, наличие другого обработчика отправки, который явно отправляет форму).

Идеальным решением было бы отладить и найти конфликтующий код и решить его.

Но в качестве обходного пути можно вместо этого использовать обработчик щелчка на кнопке отправки вместо обработчика отправки в форме.

Можно сделать что-то вроде этого:

    <input type="submit" id="btnSubmit">    

Тогда в коде вы можете сделать

$('#btnSubmit').click(function(){ //Actually we can do 'input[type="submit"]'
    return false;
})

Однако следует соблюдать осторожность, если форму можно отправить, нажав «ввод», так как в этом случае вызов обработчика щелчка может зависеть от браузера и / или основываться на используемых библиотеках, см. Комментарии вonsubmit = & quot; вернуть false & quot; не влияет на Internet Explorer 7/8 (форма все еще отправлена) на ответ Дирка Песслера для получения дополнительной информации.

Но для того, чтобы быть независимым от браузера, можно было бы поймать & quot; ввод & quot; также нажмите кнопку, как в следующем коде:

document.onkeypress = function(evt) {
   var evt = (evt) ? evt : ((event) ? event : null);
   var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
   if ((evt.keyCode == 13) && (node.type == "text")) { 
         /*return true or false here based on your logic*/;
   }
}

Однако можно также попробовать другие предложения в этой теме, такие как непосредственный вызов e.preventDefault (), хотя это то, что Jquery на самом деле делает за кулисами, тем не менее может случиться так, что ваш конфликтующий код подходит для этого.

2

вы можете просто использовать

onsubmit="return false" или если вы хотите условное представление, которое также возможно с кодом, который у вас есть.

Я не вижу никаких проблем с этим

DEMO

Код:

$('#test').submit(function(event) {
    if(jQuery('#textbox').val() == '') {
       alert('Not submitting');
       //event.preventDefault(); Not necessary but better
       return false;
    }
})
Что-то странное, я пытаюсьonsubmit="validate()" и функция validate возвращает false, но она всегда вызывает form.submit. но это работает как сейчас хорошо. Благодарю. jame
иногда что-то происходит, и вы никогда не узнаете, почему это произошло :) рад видеть, что у вас есть решение
4

$('#test').submit(function(){
      return false;
});

с:

$('form#test').submit(function(event){    
      event.preventDefault();
});
что-то странное, это не могло работать только сейчас, но теперь все в порядке. jame
Вниз избиратели, причина?
Прочитайте мой комментарий к ОП. пожалуйста, прочитайте связанный ответ. (Я прихожу сюда только сейчас, поэтому я не знаю, почему вы получили отрицательное голосование, но в любом случае это неправильно.)
Я нажал на голосование. jame
9

return false;, Попробуйте это вместо:

$('#test').submit(function(event){
      event.preventDefault();
});
@VisioN. (продолжение из другой ветки ...) Этот ответ как принятый ответ неверен.return false долженpreventDefault. Read this
На самом деле я проголосовал за ваш ответ, и мой ответ был представлен раньше вашего. Я только отредактировал для ясности.
Я получил такое же расплывчатое голосование с тем же «соавтором (-ами)»here, Кажется немного странным.
Почему я получил отрицательный голос?
Поэтому я полагаю, что я не выхожу на конечность, говоря, что iambriansreed не очень хорошо играет с другими, несмотря на то, что я ответил почти за минуту до того, как он это сделал.

Похожие вопросы