0

私はリードフォームに取り組んでいますが、頭を動かすことができないような厄介なバグがあります。

特定のフィールドに変更が加えられるたびに、この変更を反映するために非表示のフィールドが更新されます。ただし、特定の手順を実行すると、フィールド自体の更新が停止し、わかりません。

JSfiddleは要素javascriptで機能しないため、ここにテストページがあります:(リンクが削除されました)。

自動的に更新されるフィールド、そのすぐ下のフィールドを非表示にしましたtextarea

再現する手順:

  • 原産国として米国を選択します。
  • 「何を発送しますか?」からオプションを選択します。分野。
  • 「Tellusmore」フィールドから「ADDMYOWNDESCRIPTION」を選択します。
  • テキストエリアを編集し、フィールドのフォーカスを解除して、その下のフィールドがその内容で更新されることを確認します。
  • 次に、[もっと教えて]ドロップダウンをもう一度開き、今度は任意の車種を選択します。
  • 「モデル」ドロップダウンが表示されます。このドロップダウンから選択するか無視して、「非表示」フィールドがどのように更新されるかを確認できます。
  • [もっと教えて]フィールドに戻り、もう一度[自分の説明を追加]を選択します。
  • textareaを編集して、非表示フィールドが更新されなくなったことを確認します。
  • メイクをもう一度選択してから、独自の説明を再選択して、テキストエリアに加えられた変更で強制的に更新する必要があります。

どうすればこれが壊れるのを防ぐことができますか?

4

1 に答える 1

1

あなたのエラーはこの行にありますvar strModel = model.options[model.selectedIndex].text;

textundefinedのプロパティを読み取ることができないと言っています。コードのどこかで、を定義する必要がありますmodel.selectedIndex

ここで、イベントmakeで'を定義していることがわかります。onblur

info.onblur=function() {
    if (info.value=="") info.value=info.defaultValue;
    if (info.value!=info.defaultValue) {
        Show('quote_form_Make');
        BuildMakeSelect();
        make.selectedIndex = 2;
    }
}

メーカーを選択し、モデルメニューに「モデル」と表示された場合、結果は次のようになります。

document.getElementById('quote_form_Model').selectedIndex // 0

「独自の説明を追加」を選択すると、次の結果になります。

document.getElementById('quote_form_Model').selectedIndex // -1

これで、デバッグの冒険を始めることができます。

于 2013-02-28T19:24:55.553 に答える