2011-01-24 9 views
3

wはJavascriptを使用してIE8の「解放されたスクリプトからコードを実行できません」アカウンティングシステムで領収書情報を編集するためのポップアップフォーム(window.showDialog())。は</p> <p>は私が持っているIE8で問題を持っている....これはので、ここで、ここでの私の最初の質問で行く/プロトタイプ

入力フィールドの動的に作成されたテーブルを追加してコンテンツを追加するまで、これは正常に機能していました。私は情報をアレイに戻していますが、それは私のエラーが発生しているようです。 var pinputs = [];はこの問題を引き起こしているようです。

のJS関数は、ポップアップ形式で:親のjsファイルで

function saveForm() { 
if($('user_id')){ 
    var user_id = $F('user_id'); 
} else { 
    var user_id = 0; 
} 
var payments = $$('.payment'); 
var pinputs = []; 
for(var i=0; i<payments.length; i++){ 
    pinputs.push($F(payments[i])); 
} 
window.returnValue = {received_of: $F('received_of'), user_id: user_id, 
        note: $F('note'), work_date: $F('work_date'), payment: pinputs}; 
window.close(); 
} 

JS機能:

function modifyReceiptInformation(id) { 
return window.showModalDialog('mod.php?mod=receipts&mode=receipt_edit_popup&wrapper=no&receipt_id=' + id, 'Modify Receipt',"dialogWidth:600px;dialogHeight:500px"); 
} 

私はすでにここに似たような状況を発見したが、それはからの関数の呼び出しが関与して私がここでやっていない子のフォーム。おそらく私は解決策を理解していませんでしたか?私はJSの専門家ではないので、どんな入力も参考になります。

--Edit--

var payments = $$('.payment');は私のテンプレートファイル内の入力フィールドの配列であることをここに追加するのを忘れ。

+0

を使用すると、すべての ''

4

私は同じ問題を抱えていたので、私はこの便利な機能を書きました問題を回避してください。

// The array problem is when modalDialogue return values are arrays. The array functions 
// such as slice, etc... are deallocated when the modal dialogue closes. This is an IE bug. 
// The easiest way to fix this is to clone yourself a new array out of the remnants of the old. 
// 
// @param[in] ary 
// The array, which has been passed back from a modal dialogue (and is broken) to clone 
// @returns 
// A new, unbroken array. 
function cloneArray(ary) { 
    var i; 
    var newAry = []; 
    for(i=0; i<ary.length; i++){ 
     if(Object.prototype.toString.call(ary[i]) == '[object Array]') { 
      newAry.push(cloneArray(ary[i])); 
     } else{ 
      newAry.push(ary[i]); 
     } 
    } 
    return newAry; 
} 

次に、あなたはthusly、それを使用することができます。

var selectedAry = window.showModalDialog("Window.jsp", inputAry, "dialogWidth:900px; dialogHeight:700px; center:yes; resizable: yes;"); 
var newAry = cloneArray(selectedAry); 
関連する問題