ユーザープロファイルページ(登録ページではなく)に表示する「性別」(チェックボックス)オプションがあります。オプションは「男性」(デフォルト)と「女性」です。このフィールドは必須ではないため、「N/A」オプションが表示されています。 Drupalこれを行う 設計による 。
このフィールドを必須にすると、「N/A」オプションはなくなりますが、不要な登録ページに自動的に表示されます。
CSSで非表示にしようとしていましたが、チェックボックスと「N/A」テキストを非表示にする方法がわかりません。
<div class="form-item form-type-radio form-item-field-gender-und">
<input id="edit-field-gender-und-none" class="form-radio" type="radio" value="_none" name="field_gender[und]">
<label class="option" for="edit-field-gender-und-none">N/A </label>
</div>
<div class="form-item form-type-radio form-item-field-gender-und">
<input id="edit-field-gender-und-0" class="form-radio" type="radio" checked="checked" value="0" name="field_gender[und]">
<label class="option" for="edit-field-gender-und-0">Male </label>
</div>
<div class="form-item form-type-radio form-item-field-gender-und">
<input id="edit-field-gender-und-1" class="form-radio" type="radio" value="1" name="field_gender[und]">
<label class="option" for="edit-field-gender-und-1">Female </label>
</div>
助けて! ;-)
JQueryを使用してこれを実現できます
$("#edit-field-gender-und-none").remove();
これを達成するためのより良い方法は、単純な form_alter フックと、フィールドに必要ないunset()
オプションを書くことだと思います。
_function YOURMOD_form_YOURFORM_alter(&$form, &$form_state) {
unset($form['YOURFIELD']['und']['#options']['_none']);
}
_
上記の例では、フィールドはエンティティ編集フォームの分類法参照フィールドであるため、余分な_['und']
_があります。すべての状況下にある必要はありません。最初にdpm($form)
を実行して、フォームの構造を確認することができます。
別の簡単な解決策は、次の関数をtemplate.phpファイルに追加することにより、N = A form-itemにフォーム無効化クラスを追加することですDrupal.
function <theme_name>_form_element($variables) {
$element = $variables['element'];
// Disable radio button N/A
if ($element['#type'] == 'radio' && $element['#return_value'] === '_none') {
$variables['element']['#attributes']['disabled'] = TRUE;
}
return theme_form_element($variables);
}
次に、CSSを使用して行うことができます
.form-radios .form-disabled {
display: none;
}
Drupal 7では、次のコードを試してください。
/**
* Implements hook_element_info_alter().
*/
function MODULENAME_element_info_alter(&$type) {
$type['radios']['#process'][] = '_remove_radio_na';
$type['select']['#process'][] = '_remove_radio_na';
}
/**
* Removes the '_none' option from a form element.
*/
function _remove_radio_na($element) {
unset($element['#options']['_none']);
unset($element['_none']);
return $element;
}
キャッシュをクリアしてください。そうしないと機能しません。
空の値は出力の前に削除されるため、これはCSSまたはJS/jQueryで結果を非表示にするよりも優れた方法です。
私はこれをします:
jQuery("#edit-field-gender-und-none")[0].children[0].remove();