2

条件付き選択に関連付けられた複数のフィールドがあります。条件が他の入力フィールドと一致しない場合、入力フィールドは上記のdiv IDのスタイル(display:none)に関連付けられ、一致するものはアクティブなままで、上記のdiv IDに設定(display:block)されます。これはdrupalであるため、私はしません。それを制御することはできません...だからここに生成される例があります-

<div id="edit-field-p1brp-price" class="field-type-text field-name-field-p1brp-price field-widget-text-textfield form-wrapper" style="display: block;">
  <div id="field-p1brp-price-add-more-wrapper">
    <div class="form-item form-type-textfield form-item-field-p1brp-price-und-0-value">
      <label for="edit-field-p1brp-price-und-0-value">
        <input id="edit-field-p1brp-price-und-0-value" class="text-full form-text required" type="text" maxlength="255" size="60" value="5,98,000" name="field_p1brp_price[und][0][value]">
      </div>
    </div>
</div>
<div id="edit-field-sspps-price" class="field-type-text field-name-field-sspps-price field-widget-text-textfield form-wrapper" style="display: none;">
  <div id="field-sspps-price-add-more-wrapper">
    <div class="form-item form-type-textfield form-item-field-sspps-price-und-0-value">
      <label for="edit-field-sspps-price-und-0-value">
      <input id="edit-field-sspps-price-und-0-value" class="text-full form-text required" type="text" maxlength="255" size="60" value="4,65,000" name="field_sspps_price[und][0][value]">
      </div>
   </div>
</div>
<div id="edit-field-sspr1br-price" class="field-type-text field-name-field-sspr1br-price field-widget-text-textfield form-wrapper" style="display: none;">
  <div id="field-sspr1br-price-add-more-wrapper">
    <div class="form-item form-type-textfield form-item-field-sspr1br-price-und-0-value">
      <label for="edit-field-sspr1br-price-und-0-value">
      <input id="edit-field-sspr1br-price-und-0-value" class="text-full form-text required" type="text" maxlength="255" size="60" value="3,98,000" name="field_sspr1br_price[und][0][value]">
      </div>
    </div>
</div>

上記のDIVでDISPLAYがBLOCKである入力のみの値をフェッチする必要があります。以下のDIVIDを表示して試しましたが、戻らず、上記のDIV IDとその値も発生しません(これが最後に試したコードです)-

if (($("#edit-field-p1brp-price-und-0-value:block").length > 0)){
  var price = $('#edit-field-p1brp-price-und-0-value').val();
}
if (($("#edit-field-sspps-price-und-0-value:visible").length > 0)){
  var price = $('#dit-field-sspps-price-und-0-value').val();
}
if (($("#edit-field-sspr1br-price-und-0-value:visible").length > 0)){
  var price = $('#edit-field-sspr1br-price-und-0-value').val();
}

アップデート - -

1つのselect&alertの変更時に値をフェッチするために使用しているコード更新ですが、NULLのみを提供しています。

$(document).ready(function() {
        var price = null;
        $('div.form-item-field-membership-payment-type-und').change(function() {

          $("#edit-field-p1brp-price-und-0-value, #edit-field-sspps-price-und-0-value, #edit-field-sspr1br-price-und-0-value").each(function() {
                if($(this).is(':visible')) {
                    price = $(this).val();
                    alert(price);
                }
            });
        alert(price);   
    });  
    });
4

2 に答える 2

1

あなたが使用する必要があります

$(selector).is(':visible')

このjsfiddleをチェックして、フィールドをループします

http://jsfiddle.net/uuKHB/

アップデート

私はあなたのためにjsfiddleを更新しました:

http://jsfiddle.net/uuKHB/1/

$("#edit-field-p1brp-price-und-0-value, #edit-field-sspps-price-und-0-value, #edit-field-sspr1br-price-und-0-value").each(function() {
...
}

これで、選択した入力をループします(セレクターを見てください。コンマ区切りで複数の要素を追加できます)

アラートへの更新

var price;
$("#edit-field-p1brp-price-und-0-value, #edit-field-sspps-price-und-0-value, #edit-field-sspr1br-price-und-0-value").each(function() {
    if($(this).is(':visible')) {
        price = $(this).val();
    }
});
alert(price);

このような ;)

これがアラート付きの更新されたjsfiddleです

http://jsfiddle.net/uuKHB/2/

于 2013-01-27T15:45:25.660 に答える
0

displayプロパティを設定しておらず、displayのデフォルト値はinline-blockになります。ブロックをチェックする必要がある場合、または条件でインラインブロックを使用する必要がある場合は、displayプロパティをblockに設定します。css()を使用してdisplayプロパティにアクセスできます。あなたは有効なhtmlを持っていて、1つの要素だけが持っていると思いますid = edit-field-p1brp-price-und-0-value

ライブデモ

if($("#edit-field-p1brp-price-und-0-value").css('display') == 'block')
{
    var price = $('#edit-field-sspr1br-price-und-0-value').val();
}

表示がブロックされていない場合、それ以外の場合は一部が実行されます。これは ここで確認できます。

于 2013-01-27T15:40:52.987 に答える