アドレスのhtml選択ドロップダウンリストがあります。一部のアドレスは長く、親の div 境界からはみ出しています。
宿題をしたところ、css ルールがこれを解決することがわかりました。
select, option { width: __; }
このドロップダウン リストは、ajax 対応フォームの一部です。ユーザーが他の時代に変わると、住所フィールドのオプションが変更されます。
これで、オプションが同じである限り、css ルールが正常に機能することがわかりました。選択オプションが ajax によって変更されるようなことをすると、css ルールが制御できなくなります。選択オプション フィールドは元の 1 行の形式に戻り、境界線から抜け出します。
オプションの変更の前後にhtmlマークアップをチェックして、選択構造とIDが損なわれていないかどうかを確認しました。要素構造は同じであることがわかり、select 要素 id に変更はありません。
では、オプションが変更されたときに css ルールが保持されなくなったのはなぜですか?
この動作は、IE、Firefox、および Chrome で発生します。
私は Drupal 7 を使用しており、それはフォーム、ajax フレームワークです。
更新: コード
Drupal 7 を使用しているため、実際に JS コードを作成することはありません。ここでは PHP と CSS のみを表示できます。
形:
$form['shipping_address']['ship_to'] = array(
'#type' => 'select',
'#title' => 'Ship To',
'#options' => $to_options,
'#required' => true,
'#default_value' => $selected,
'#ajax' => array(
'callback' => 'ship_to_callback',
'wrapper' => 'ship_to_address_replace',
),
);
$ship_to_address_options = get_ship_to_address_options($selected);
$form['shipping_address']['ship_to_address'] = array(
'#type' => 'select',
'#title' => $to_options[$selected],
'#options' => $ship_to_address_options,
'#prefix' => '<div id="ship_to_address_replace">',
'#default_value' => isset($form_state['values']['ship_to_address']) ? $form_state['values']['ship_to_address'] : '',
);
「ship_to」は、「ship_to_address」で使用できるオプションを制御します。
CSS:
select#edit-ship-to-address, select#edit-bill-to-address {
width: 60%;
}