1

jQuery スクリプトと Safari (Mac + iPhone) に問題があります。これはページの構造です: 構造

次のスクリプトに送信する前にデータを変更する必要があるため、すべてのフォーム (serializeArray) を読み取り、必要に応じて変更し、新しいフォーム (display:none) に書き込み、次のページに送信します。 . これはスクリプトです:

$("input#newsubmit").click(function(e) {
    e.preventDefault();
    arraytix = [];
    checkboxStatus = 0;
    $("input[id^=field]").each(function(i) {
         if ($(this).val() != 0) {
              arraytix[i] = $(this).attr('name') + ":" + $(this).val() + ":" + $(this).parent().parent().find("li.four").find("input[id*=price_item]").val() + ":" + $(this).parent().parent().find("li.five").find("input[id*=vvk_item]").val();
         }
    });

    var carttix = '';
    jQuery.each(arraytix, function(i) {
         if (arraytix.hasOwnProperty(i)) {
             if (i == arraytix.length - 1) {
                 carttix += this;
             } else {
                 carttix += this + '-';
             }
         }
    });

    $("form#finalSubmit").append( '<input name="cart" value="'+carttix+'" />');
    $("form#finalSubmit").append( '<input name="versand" value="'+$("select#item_vat_1").val()+'" />');
    $("form#finalSubmit").append( '<input name="barzahlung" value="'+checkboxStatus+'" />');
    if (checkboxStatus == 0) { 
         var fields = $("fieldset.customer").serializeArray();
         alert("before each");
         jQuery.each(fields, function(i, field){
             $("form#finalSubmit").append( '<input name="'+field.name+'" value="'+field.value+'" />');
             alert("loop");
         });
         alert("after jquery.each");
    }
    //$("form#finalSubmit").submit();
}

jQuery.each の最初のインスタンスは、すべてのブラウザーとプラットフォームで期待どおりに機能します。append コマンドを使用した jQuery.each の 2 番目のインスタンスは、すべてのプラットフォームの Safari で実行されません。

デバッグ目的で、いくつかのアラートを追加しました。Mac と Safari: alert("before each") と alert("after each") がトリガーされますが、jQuery.each はトリガーされません。他のブラウザ (Firefox Mac を含む) には問題はありません。最初のアラート、いくつかのアラート ("ループ")、および最後のアラートが発生するはずです。

ここで何が問題なのですか?

4

1 に答える 1