Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jquery ajax表单提交在IE8中工作不正常_Jquery_Ajax_Forms - Fatal编程技术网

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

jquery ajax表单提交在IE8中工作不正常,jquery,ajax,forms,Jquery,Ajax,Forms,我放弃了使用onblur或focusout提交表单的尝试,因为这迫使页面刷新。现在我使用一个按钮,它使用一个ajax post,并在添加项目时清除qty字段 我现在的问题是IE8不能很好地使用这个解决方案 $('.qty').change('input[type=text]').val(''); 这适用于FF、Chrome和Safari,但不适用于IE8。在IE8中,当用户点击add item按钮时,表单被提交,页面刷新。显然,在IE8中ajax调用失败了。我就是不明白为什么。我是否需要在.

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

我现在的问题是IE8不能很好地使用这个解决方案

$('.qty').change('input[type=text]').val(''); 
这适用于FF、Chrome和Safari,但不适用于IE8。在IE8中,当用户点击add item按钮时,表单被提交,页面刷新。显然,在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;
    }
});
//通过POST向中间脚本发送商品信息,中间脚本调用jcart.php并返回更新的购物车HTML
//$.post('jcart-relay.php',{“”:itemId,“:itemPrice,”:itemName,“:itemQty,”:itemAdd},函数(数据){
$.post('jcart-relay.php',postData,函数(数据){
//JSTN端
//用更新的购物车HTML替换现有购物车HTML
$('jcart').html(数据);
$('.jcart hide').remove();
$('.qty').change('input[type=text]').val('');
});
//防止默认窗体操作
返回false;
});
//当访问者按ENTER键时
//“更新”和“空”按钮已隐藏
//但是访问者可能会更新一个项目数量,然后在关注另一个元素之前按回车键
//这意味着我们必须更新整个购物车,而不仅仅是数量发生变化的商品
//阻止ENTER键提交表单,所以用户必须单击“签出”或关注触发下面更改功能的另一个元素
$('jcart').keydown(函数(e){
//如果输入键
如果(e.which==13){
//防止默认操作
返回false;
}
});

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

$('form.jcart').submit();
我希望我了解您的意图,因为代码格式不好,问题也不清楚。

使用:


干杯

我可以用这一行提交表单,但我要做的是在focusout上提交输入。不必点击提交按钮或点击回车。@ RESQ32:<代码输入[type=“text”] .FooSoSoT(函数){ $(this)。最接近(“表单”)。(代码)(<代码)>恐怕不起作用。稍后我将返回它。感谢您在<代码>键下< /COD>处理程序中返回<代码> false <代码>,考虑使用<代码> E.PrimeDebug()。恐怕这不起作用。它会强制页面刷新,将用户放回第一页。$('.qty').change('input[type=text]')).val('');适用于所有浏览器,但IE8会添加项目,页面不会刷新。是的,因为它会在blur上提交表单,这正是您的问题标题所说的您想要做的。如果这不是您想要的,您想要什么?处理您的问题-提出特定问题(一个)并提供所有相关代码。
$('form.cart input[type=text]').blur(function(){
   $(this).parents('form').submit();
}