JQuery AJAX формы отправки не работает должным образом в IE8 - PullRequest
0 голосов
/ 21 марта 2012

Я перестал пытаться использовать onblur или focusout для отправки формы, потому что это вызвало обновление страницы. Теперь я использую кнопку, и она использует сообщение ajax и очищает поле qty при добавлении элемента.

Моя проблема сейчас в том, что IE8 не очень хорошо работает с этим решением.

$('.qty').change('input[type=text]').val(''); 

Это работает в FF, Chrome и Safari, но не работает в IE8. В IE8, когда пользователь нажимает кнопку «Добавить элемент», форма отправляется и страница обновляется. Очевидно, что вызов ajax терпит неудачу в IE8. Я просто не могу понять, почему. Нужно ли предотвращать действие по умолчанию перед вызовом .change?

фрагмент из jcart-javascript.php

// SEND ITEM INFO VIA POST TO INTERMEDIATE SCRIPT WHICH CALLS jcart.php AND RETURNS         UPDATED CART HTML
//      $.post('<?php echo $jcart['path'];?>jcart-relay.php', { "<?php echo $jcart['item_id']?>": itemId, "<?php echo $jcart['item_price']?>": itemPrice, "<?php echo $jcart['item_name']?>": itemName, "<?php echo $jcart['item_qty']?>": itemQty, "<?php echo $jcart['item_add']?>" : itemAdd }, function(data) {
  $.post('<?php echo $jcart['path'];?>jcart-relay.php', postData, function(data) {
//JSTN-end

        // REPLACE EXISTING CART HTML WITH UPDATED CART HTML
        $('#jcart').html(data);
        $('.jcart-hide').remove();
        $('.qty').change('input[type=text]').val('');
        });

    // PREVENT DEFAULT FORM ACTION
    return false;

    });


// WHEN THE VISITOR HITS THEIR ENTER KEY
// THE UPDATE AND EMPTY BUTTONS ARE ALREADY HIDDEN
// BUT THE VISITOR MAY UPDATE AN ITEM QTY, THEN HIT THEIR ENTER KEY BEFORE FOCUSING ON ANOTHER ELEMENT
// THIS MEANS WE'D HAVE TO UPDATE THE ENTIRE CART RATHER THAN JUST THE ITEM WHOSE QTY HAS CHANGED
// PREVENT ENTER KEY FROM SUBMITTING FORM SO USER MUST CLICK CHECKOUT OR FOCUS ON ANOTHER ELEMENT WHICH TRIGGERS CHANGE FUNCTION BELOW
$('#jcart').keydown(function(e) {

    // IF ENTER KEY
    if(e.which == 13) {

    // PREVENT DEFAULT ACTION
    return false;
    }
});

Ответы [ 2 ]

0 голосов
/ 24 апреля 2012

Использование размытие :

$('form.cart input[type=text]').blur(function(){
   $(this).parents('form').submit();
}

Приветствия

0 голосов
/ 21 марта 2012

Если вы хотите вызвать событие отправки, используйте это:

$('form.jcart').submit();

Я надеюсь, что у вас есть намерения, потому что код имеет плохое форматирование и вопрос недостаточно ясно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...