jquery ajax表单提交在IE8中工作不正常
我放弃了使用onblur或focusout提交表单的尝试,因为这迫使页面刷新。现在我使用一个按钮,它使用一个ajax post,并在添加项目时清除qty字段 我现在的问题是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调用失败了。我就是不明白为什么。我是否需要在.
$('.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();
}