2012-03-20 13 views
-1

onblurまたはfocusoutを使用してフォームを送信しようとするのをやめました。今、私はボタンを使用し、項目が追加されると、ajax投稿を使用してqtyフィールドをクリアします。jquery ajaxフォームの送信がIE8で正常に動作しない

私の問題は今、IE8がこのソリューションでうまくいきません。

これは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

+0

おかげで、私は – Resq32

答えて

0

からの抜粋あなたはトリガーにしたい場合は、イベントを提出し、これを使用します。私は私はあなたの意図を持って期待し

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

を、そのコードbecuaseありフォーマットが正しくないと疑問が十分にはっきりしない。

+0

ことを試してみましょうIその行で送信するフォームを得ることができますが、私がしようとしているのは、フォーカスアウトで入力を送信することです。送信ボタンをクリックしたり、Enterキーを押したりする必要はありません。 – Resq32

+0

@ Resq32: '$( 'form.cart input [type =" text "] .Focusout(function){$(this).closest(' form ')。submit()});' – gdoron

+0

私は恐れていますありがとうございました – Resq32

0

使用blur

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

乾杯

+0

私はうまくいきません。ページをリフレッシュして最初のページに戻すように強制します。$( '。qty')。 – Resq32

+0

ぼかしでフォームを送信しているので、正確にはフォームを提出するので、すべてのブラウザで機能しますが、項目を追加してページを更新しません(入力[type = text]あなたの質問のタイトルにあなたがしたいことが書かれているかどうか、それはあなたが望むものではない場合、あなたは何をしたいですか? – Madbreaks

関連する問題