1

これが私のJavaScriptです:

  $('#Service').val("2");
  $("#Service").change(); // Sets new options in subservice.
  $('#Subservice').val("5");
  //EDIT:
  alert($('#Subservice').length); // Returns 1, when there are far more in it.

Service と Subservice はドロップダウン ボックスです。

サービスの変更時に、サブサービスの新しいリストが入力されます。

これは、編集するレコードのフィールドを設定しています。編集ボタンをクリックすると実行されます。サービスのドロップダウン ボックスを設定し、サブサービスのドロップダウン ボックスにデータを入力してから、適切なドロップダウンの選択を設定しようとします。

ただし、サブサービス ボックスが正しく設定されていません。オプションは正しく、.change()機能しており、サービス セットも正しく設定されています。ただし、サブサービスは設定されていません。そして、値が 5 のエントリがあります。

私の唯一の理由は、 .change が発火しているが、終了する前に .val の設定を続けているということです。したがって、設定時にオプションは存在しません。ただし、なぜスレッド化されるのかわかりません。そのため、何が起こっているのか、それを修正する方法がわかりません。

4

2 に答える 2

1

コードを ready 関数に入れましたか?

$(function () {
  $('#Service').val("2");
  $("#Service").change(); // Sets new options in subservice.
  $('#Subservice').val("5");
});

これは、関数内のコードを実行する前に DOM 全体の準備が整うのを待って、#service を利用可能にします。

于 2012-05-09T08:42:43.457 に答える
0

コードの最後の行を次のように変更します

setTimeout(function(){ 
    $('#Subservice').val("5");
}, 10);
于 2012-05-09T08:43:34.707 に答える