jquery ajax表单提交在IE8中无法正常工作

时间:2012-03-20 20:58:48

标签: jquery ajax forms

我放弃尝试使用onblur或focusout来提交表单,因为这会强制页面刷新。现在我使用一个按钮,它使用ajax post并在添加项目时清除qty字段。

我现在的问题是IE8在这个解决方案上表现不佳。

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

这适用于FF,Chrome和Safari,但在IE8中不起作用。在IE8中,当用户点击添加项目按钮时,表单被提交并且页面刷新。显然,IE8中的ajax调用失败了。我只是想不通为什么。我是否需要在.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 :(得分:0)

如果您想触发提交事件,请使用以下命令:

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

我希望我有你的意图,因为代码格式错误,问题不够明确。

答案 1 :(得分:0)

使用blur

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

干杯