Bộ chọn chính xác cho radio để xác định xem BẤT K radio radio nào được chọn?


7

Sử dụng #states để thay đổi mức độ hiển thị của phần tử biểu mẫu, tôi muốn phần tử thứ 2 chỉ hiển thị nếu phần tử thứ 1 được điền vào. Phần tử đầu tiên là một cặp nút radio, vì vậy tôi đã thử:

  '#states' => array('visible' => array(
  ':input[name="radio-id"]' => array('value' => '0', 'value' => '1'),
    ),),

Tuy nhiên, điều đó không hoạt động, điều kiện giá trị thứ 2 làm tắc nghẽn đầu tiên, do đó, phần tử khác chỉ xuất hiện nếu radio thứ 2 ('1') được chọn. Vì vậy, sau đó tôi đã cố gắng:

    :input[name="radio-id"]' => array('checked' => TRUE),

Không, điều đó cũng không hoạt động.

Cú pháp đúng để sử dụng cho việc này là gì và nó nằm trên trang tài liệu nào? (drupal.org hoặc trang web khác?) Tôi đã xem và xem nhưng không thể tìm thấy nó.

Câu trả lời:


8

Có vấn đề tương tự ngày hôm nay. Một sửa đổi nhỏ của biểu thức giá trị phủ định được đề xuất trong nhận xét này: "Lựa chọn radio trống" trên trang API drupal_ process_states () , đã giúp tôi!

'#states' => array(
   'visible' => array(
     ':input[name="radios-name"]' => array('!value' => false),
   ),
 ),

Tôi chỉ muốn danh sách chọn với mục #states ở trên là ẩn trong khi không có lựa chọn nào được đưa ra trong danh sách năm radio của tôi (tên chia sẻ "tên radio").

Radio cũng là '#required' => đúng, trong trường hợp của tôi và tất cả 5 nút radio riêng lẻ đều có giá trị chuỗi không phải là số. Không có #default_value được chỉ định trong trường hợp của tôi.

Tuyên bố miễn trừ trách nhiệm: Tôi chỉ thử nghiệm điều này trên Chrome!


Cảm ơn vô cùng. Nhân tiện, nó cũng hoạt động trên Firefox.
marcvangend

Cảm ơn - hoạt động tốt. Lưu ý trong ví dụ bạn liên kết với họ đang sử dụng trạng thái vô hình trái ngược với hiển thị mà bạn đang sử dụng. Tôi cũng phải sử dụng vô hình để làm cho nó hoạt động.
Đêm giao thừa

2

Bạn nên xem ví dụ về các trạng thái trong ví dụ biểu mẫu trong dự án ví dụ . Tình huống chính xác này được thể hiện một số cách khác nhau.


Vui lòng thử đăng đoạn mã ở đây. Chúng tôi muốn người dùng của chúng tôi ở đây càng lâu càng tốt.
niksmac

2

Tài liệu cho thuộc tính #states nằm trong tài liệu cho drupal_process_states(), trong đó có chứa câu và mã ví dụ sau.

Khi tham chiếu danh sách chọn và các nút radio trong điều kiện từ xa, phải sử dụng điều kiện 'giá trị':

  '#states' => array(
    // Show the settings if 'bar' has been selected for 'foo'.
    'visible' => array(
      ':input[name="foo"]' => array('value' => 'bar'),
    ),
  ),

Mã bạn đang sử dụng trong đoạn mã thứ hai của bạn hoạt động cho các hộp kiểm, chẳng hạn như trong ví dụ sau.

$form['toggle_me'] = array(
  '#type' => 'checkbox',
  '#title' => t('Tick this box to type'),
);

$form['settings'] = array(
  '#type' => 'textfield',
  '#states' => array(
    // Only show this field when the 'toggle_me' checkbox is enabled.
    'visible' => array(
      ':input[name="toggle_me"]' => array('checked' => TRUE),
    ),
  ),
);
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.