Điểm:0

hook_form_alter làm cho js trên mọi biểu mẫu khác không hoạt động

lá cờ zw

tôi sử dụng hook_form_alter() để thay đổi một trường.

function mymodule_form_alter(&$form, &$form_state) {
  if ($form['#id'] == 'my_form') {
    $form['my_field']['#value'] = 'Giá trị mới';
  }
}

Nó thay đổi giá trị trường thành giá trị mới, nhưng vấn đề là ngay khi tôi kích hoạt mô-đun này, JavaScript trên biểu mẫu sẽ ngừng hoạt động. Ví dụ: trình đơn thả xuống, tự động hoàn thành, AJAX không còn hoạt động.

Tôi không thể hiểu những gì gây ra điều này.

lá cờ cn
Hãy thử tạm thời thay đổi chủ đề (sang bất kỳ chủ đề nào có trong lõi mà bạn chưa sử dụng) và xem lỗi có còn xảy ra không.
Jaypan avatar
lá cờ de
Bạn đang chẩn đoán sai sự cố của mình vì mã này sẽ không gây ra sự cố mà bạn đang gặp phải.
No Sssweat avatar
lá cờ ua
Kiểm tra bảng điều khiển của trình duyệt để tìm lỗi JS.
apaderno avatar
lá cờ us
@Jaypan đúng: Mã đó không thể gây ra sự cố với mã JavaScript. Bạn không nhận được ID biểu mẫu từ `$form['#id']`, nhưng đó lại là một vấn đề khác.
apaderno avatar
lá cờ us
Ngoài ra, trước khi đặt `$form['my_field']['#value']`, bạn nên kiểm tra `$form['my_field']` đã được đặt chưa.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.