Score:0

เพิ่มผู้ฟังเหตุการณ์เพื่อเลือกรายการ

ธง cn

ฉันได้แนบ js ต่อไปนี้กับฟิลด์ฟอร์มมุมมองที่เปิดเผยและใช้งานได้กับการโหลดหน้าแรก แต่เมื่อฟอร์มเปลี่ยนไป (โดย ajax) จะไม่ทำงาน

ฉันไม่สามารถหาตำแหน่งที่จะเพิ่มผู้ฟังเหตุการณ์สำหรับการเปลี่ยนแปลงรายการที่เลือกได้

ต่อไปนี้ไม่ได้ใช้ jQuery แต่ใช้แกนหลักเมื่อไลบรารี ดังนั้นฉันจึงต้องการหลีกเลี่ยง jQuery

/**
 * @ไฟล์
 * การปรับหน้า Landing Page
 */

 (ฟังก์ชัน (Drupal ครั้งเดียว) {
    'ใช้อย่างเข้มงวด';
  
    /**
     * ลักษณะการทำงานที่แนบมาสำหรับ Custom DataLayer
     *
     * @type {{ไฟล์แนบ: Drupal.behaviors.CurrentSelectOption.attach}}
     */
    Drupal.behaviors.CurrentSelectOption = {
      แนบ: แนบฟังก์ชัน (บริบท) {
        // โหลดหน้าแรก
        ให้องค์ประกอบ = ครั้งเดียว ('CurrentSelectOption', 'select#edit-field-event-country.form-select', บริบท);
        Element.forEach (การประมวลผลการโทรกลับ);
      }
    };
  
    ฟังก์ชันการประมวลผลการโทรกลับ (ค่า, ดัชนี) {
      ให้ option = value.options [value.selectedIndex]
      ค่าลบ (ตัวเลือก);
      value.add (ตัวเลือก, 0);
    }

})(Drupal ครั้งเดียว);
Jaypan avatar
de flag
ทำไมคุณถึงหลีกเลี่ยง jQuery มันมาพร้อมกับแกน เป็นเวลาเกือบ 2 ทศวรรษแล้วที่ฉันเขียน Raw JS โดยไม่ใช้ jQuery ดังนั้นจึงเป็นเรื่องยากสำหรับฉันที่จะจัดหาวิธีแก้ปัญหา แม้ว่าฉันจะมีได้โดยไม่มีข้อกำหนดนั้นก็ตาม
cn flag
ฉันไม่ต้องการเพิ่มการพึ่งพาสคริปต์อีกหากไม่จำเป็น และมันทำงานได้นอกเหนือจากที่จะไม่ทริกเกอร์เมื่อฟอร์มถูกเปลี่ยน ฉันไม่มีอะไรเทียบกับ jQuery :-)
Score:0
ธง cn

เมื่อมีการเรียก AJAX ผ่าน Drupal API พฤติกรรมจะถูกแนบอีกครั้ง ดังนั้นหากมีการใช้งาน API คำตอบก็คือให้ใส่โค้ดไว้ข้างใน แนบ วิธีการในพฤติกรรมของคุณที่คุณมีอยู่แล้ว

เคล็ดลับคืออย่าใช้ ID เพื่อกำหนดเป้าหมายองค์ประกอบ นี่เป็นกฎแนวทางปฏิบัติที่ดีที่สุดโดยทั่วไปสำหรับการเลือก CSS/JS DOM แต่สิ่งที่สำคัญเป็นพิเศษในที่นี้ เนื่องจาก Drupal จะสร้าง ID ใหม่สำหรับองค์ประกอบฟอร์มที่แทนที่ หากคุณตรวจสอบ Select และ Wrapper หลังจากการเรียก AJAX คุณจะเห็น -2 ต่อท้ายไอดีเดิม

นอกเหนือจากนั้น (ไม่มีการทดสอบ) รหัสของคุณดูดี

cn flag
ฉันลืมไปแล้วว่า :-) การใช้คลาสช่วยแก้ปัญหา

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา