2011-09-15 19 views
0

フォーム内にさまざまな入力ボックスが挿入されたテーブルがあります。私は、ユーザーがテーブルから行を追加または削除できるようにするさまざまなJavaScript関数を書いており、ユーザーが行に入った場所の後ろにある要素名を動的に変更します(もし意味があれば - 私がやろうとしていること)。JavaScriptでフォーム要素の名前を動的に変更する

これはIE9、Firefox、Chromeでは動作しますが、IE7では動作しません(私の組織内の多くの人が現在XPを使用しています)。

コードは私が今までに書いた中で最もエレガントなものではありませんが、明日の人々の前でそれをデモする前にこれを修正する必要があります! (だから私は何かを検討しても構わないと思うが、現時点では速くて厄介な修正だって!)

ありがとう!

editForm.elements[e].name = 'add_' + (parseInt(currentQuestionNumber) + 1); 

...の代わりに

for (var e = 0; e < editForm.elements.length; e++) { 
    // Increment 'add row' buttons so that they add underneath the correct row 
    if (editForm.elements[e].name.length >= 4) { 
     if (editForm.elements[e].name.substr(0, 4) == 'add_') { 
      stringPos = editForm.elements[e].name.indexOf('_'); 
      currentQuestionNumber = editForm.elements[e].name.substr(stringPos + 1); 
      if (currentQuestionNumber > pos) { 
       editForm.elements[e].name = 'add_' + (parseInt(currentQuestionNumber) + 1); 
       editForm.elements[e].id = 'add_' + (parseInt(currentQuestionNumber) + 1); 
       editForm.elements[e].setAttribute("onclick", "addRow(" + (parseInt(currentQuestionNumber) + 1) + ");"); 
      } 
     } 
    } 

...私は...

をも使用している...しかし、これはどちらかのIE7で動作しません。どんな助けもありがたい。

+0

名前を単独で残し、それらをアレイサーバー側としてコンパイルすると、PHPの[フォーム処理](http://www.php.net/manual/en/faq.html.php#faq.html)のようになります。配列)?私は提出前に提出されたデータをXMLとして書式設定することでこれを自分でやってきました。 – outis

+0

第2の条件は、最初の条件が真である場合にのみ可能であり、最初の条件が冗長になるため、両方の条件が必要ではありません。すべてのIEバージョンで動作しない 'setAttribute'を使用してclickイベントを設定しているので、これはすべてのクロスブラウザで動作することに驚いています。たぶん、すべての行の追加時にインクリメントする「グローバル」カウンタを持っている可能性があります。このインライン文字列解析をすべて行う必要はありません。 – davin

+0

'get/set/removeAttribute'に禁輸を設定できますか?彼らは彼らが価値があるよりもトラブルが多い。 –

答えて

関連する問題