2012-03-20 140 views
-1

我放弃尝试使用onblur或focusout来提交表单,因为这会强制刷新页面。现在我使用一个按钮,它使用ajax帖子并在项目添加时清除数量字段。jquery ajax表单提交在IE8中无法正常工作

我现在的问题是,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; 
    } 
}); 
+0

而是在'keydown'处理程序返回'FALSE'的,可以考虑使用'e.preventDefault()' – Madbreaks 2012-04-23 21:31:42

+0

谢谢,我会尝试 – Resq32 2012-04-23 21:47:28

回答

0

片断如果你想触发提交事件,使用:

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

我希望我得到了你的意图,监守代码有格式不正确,问题不够清楚。

+0

我可以得到表单提交该行,但我想要做的是提交输入焦点。而无需点击提交按钮或回车。 – Resq32 2012-03-20 21:25:30

+0

@Resq32:'$('form.cart input [type =“text”]。focusout(function(){$(this).closest('form')。submit()});' – gdoron 2012-03-20 21:51:25

+0

恐怕('。qty')。没有工作,我会再回来看看,谢谢 – Resq32 2012-03-20 23:42:07

0

使用blur

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

干杯

+0

恐怕不起作用,它强制刷新页面,使用户回到第一页。更改('input [type = text]')。val('');适用于所有浏览器,但IE8添加项目并且页面不刷新 – Resq32 2012-04-23 21:57:21

+0

是的,因为它提交了模糊的表单,你的问题标题说你想做什么,如果这不是你想要的,你想要什么?工作你的问题 - 提出一个具体的问题(一个)并提供所有相关的代码。 – Madbreaks 2012-04-23 23:30:45