1

私は問題があります。私はいくつかのコードを作成しましたが、論理的には機能するはずですが、起動するたびに、本来あるべきことを実行していません。以下のコードとjsFiddleを投稿しますが、主な問題は、divの値がGoldに設定されている場合、2番目の選択ボックスを無効にすることです。

jquery:

$('select[name="Package Options"]').change(function() {
  $('#result').html($(this).find(":selected").val());
  var result = $('#result').val();
  if(result == 'Gold') {
      $('select[name="Bolt On Options"]').attr('disabled', 'disabled');
  }
});

jsFiddle- http: //jsfiddle.net/andyjh07/xHrHA/

みんなありがとう

4

5 に答える 5

1

このhtml()メソッドを使用して、要素の内容を取得する必要があります#resultval()主にフォーム要素の値を取得するために使用されます。

$('select[name="Package Options"]').change(function() {
  $('#result').html($(this).find(":selected").val());
  var result = $('#result').html();  //Notice .html() instead of val()
  if(result == 'Gold') {
      $('select[name="Bolt On Options"]').attr('disabled', 'disabled');
  }
});

実例:http://jsfiddle.net/xHrHA/2/

コメントで指摘されているように、これはすべて次のように簡略化できます。

$('select[name="Package Options"]').change(function() {
  $('#result').html($(this).find(":selected").val());   
  if($(this).val() == 'Gold') {
      $('select[name="Bolt On Options"]').attr('disabled', 'disabled');
  }
});

実例:http://jsfiddle.net/xHrHA/3/

于 2013-02-14T10:43:31.087 に答える
1

.findコードを非常に複雑にしました-値は必要ありません-イベントハンドラー:selectedのようにすでに利用可能です。this.value

また、別の値が選択されたときにコントロールを再度有効にできる必要があるため、次のようになります。

$('select[name="Package Options"]').change(function () {
    var result = this.value;
    $('#result').html(result);
    $('select[name="Bolt On Options"]').prop('disabled', result === 'Gold');
});

注意:を使用.propして、の代わりに既存のコントロールのプロパティを変更する必要があり.attrます。後者は、HTMLソースに存在する属性のみを反映することになっていますが、jQueryにはdisabled、これらの状況で確実に機能するように属性のハックがあります。他の利点(ここに見られるように)は、提供された値がブール値になり、コードがさらに単純化されることです。

また、セレクターを単純なIDに置き換えることをお勧めしますselect[name="..."](もちろん、要素にも存在する必要があります)。これにより、コードが読みやすくなり、以下に示すような最終的な解決策が得られます。これは、元のコードよりもはるかに短いだけでなく、はるかに効率的であり、別のオプションが選択されたときに「リセット」を「有効」に戻します。 :

$('#package').change(function () {
    var result = this.value;
    $('#result').html(result);
    $('#bolton').prop('disabled', result === 'Gold');
});

http://jsfiddle.net/alnitak/gBMQ9/を参照してください

于 2013-02-14T10:46:36.917 に答える
0

これを試して

JSコード

$('select[name="Package Options"]').change(function() {
  $('#result').html($(this).find(":selected").val());
  var result = $('#result').text();//use `text()` or `html()` instead of val()
  if(result == 'Gold') {
      $('select[name="Bolt On Options"]').attr('disabled', 'disabled');
  }
});

ライブデモ

于 2013-02-14T10:44:33.583 に答える
0

divにはvalueプロパティがないため、val()は使用できません。代わりに.text()または.html()を使用する必要があります。

于 2013-02-14T10:44:46.383 に答える
-2

使ってみてください

var result = $ .trim('#result')。val();

于 2013-02-14T10:44:56.223 に答える