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

У меня есть несколько вопросов с функцией отправки 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 почему.

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

 Nathan Taylor13 мая 2012 г., 16:02
Можете ли вы опубликовать свое заявление ЕСЛИ?
 jame06 июн. 2012 г., 10:34
Спасибо, если вы напишите полный ответ здесь, я буду признателен.
 gdoron03 июн. 2012 г., 08:13
Принятый ответ неверен.return false долженpreventDefault. Read this Я мог бы написать полный ответ здесь, если хотите.
 jame13 мая 2012 г., 16:25
утверждение IF очень просто, это не проблема. например, если (flag) значение флага является логическим значением.

Ответы на вопрос(4)

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

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

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

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

    <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 на самом деле делает за кулисами, тем не менее может случиться так, что ваш конфликтующий код подходит для этого.

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

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

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

DEMO

Код:

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

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

с:

$('form#test').submit(function(event){    
      event.preventDefault();
});
 14 мая 2012 г., 16:22
Вниз избиратели, причина?
 jame15 мая 2012 г., 03:42
Я нажал на голосование.
 jame13 мая 2012 г., 16:40
что-то странное, это не могло работать только сейчас, но теперь все в порядке.
 03 июн. 2012 г., 08:44
Прочитайте мой комментарий к ОП. пожалуйста, прочитайте связанный ответ. (Я прихожу сюда только сейчас, поэтому я не знаю, почему вы получили отрицательное голосование, но в любом случае это неправильно.)
Решение Вопроса

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

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

Ваш ответ на вопрос