ฉันพยายามเขียนโปรแกรม (ด้วย jQuery) เรียกใช้การคลิกบนปุ่มที่มีพฤติกรรม AJAX ในรูปแบบ Drupal แต่จนถึงขณะjQuery('#edit-submit').click()
นี้ไม่ได้ทำอะไรเลย
การคลิกเมาส์จริงบนปุ่มนั้นจะทำงานตามที่ต้องการ ความคิดใด ๆ ที่จะทำให้มันทำงานอย่างไร
ฉันพยายามเขียนโปรแกรม (ด้วย jQuery) เรียกใช้การคลิกบนปุ่มที่มีพฤติกรรม AJAX ในรูปแบบ Drupal แต่จนถึงขณะjQuery('#edit-submit').click()
นี้ไม่ได้ทำอะไรเลย
การคลิกเมาส์จริงบนปุ่มนั้นจะทำงานตามที่ต้องการ ความคิดใด ๆ ที่จะทำให้มันทำงานอย่างไร
คำตอบ:
jQuery('#edit-submit').mousedown()
- เห็นได้ชัดว่ามีความแตกต่างใหญ่
mousedown()
เป็นเพียง "ส่วนแรก" ของclick()
เหตุการณ์ซึ่งจะสมบูรณ์เมื่อmouseup()
เกิดขึ้น เมื่อคุณคลิกที่ลิงก์จากนั้นคุณปล่อยเมาส์ออกไปนอกพื้นที่ของลิงก์สิ่งที่click()
มักจะไม่ได้ถูกเรียกใช้และลิงก์จะไม่ถูกติดตาม อาจจะมีสายเรียกอาแจ็กซ์จะช่วยป้องกันmouseup()
การถูกไล่ออก แต่นี้เป็นเพียงการคาดเดา ...
ที่จริงแล้วไม่จำเป็นต้องเดา
คุณควรใช้พฤติกรรมของ Drupal
Drupal.behaviors.yourFunctionName = {
attach:function (context, settings) {
// Your code goes here....
}
}
สิ่งนี้จะทำให้คุณสามารถเข้าถึงคุณสมบัติ ajax ของการตั้งค่า
Drupal.behaviors.yourFunctionName = {
attach:function (context, settings) {
console.log(settings.ajax);
}
}
ขึ้นอยู่กับการกำหนดค่าของคุณคุณจะเห็นรายการองค์ประกอบที่มีการทริกเกอร์ด้วยคุณสมบัติต่าง ๆ เช่นชื่อของฟังก์ชั่นการโทรกลับ id ของตัวเลือกเช่นเดียวกับชื่อของเหตุการณ์ทริกเกอร์
จากนั้นคุณสามารถใช้ข้อมูลที่เกี่ยวข้องเพื่อเริ่มกิจกรรมของคุณ
// $(selector).trigger(eventName);
// for example...
$('#edit-product-id-15', context ).trigger('change');
สร้าง ajax submit เหมือนดังต่อไปนี้
$form['button'] = array(
'#type' => 'button',
'#value' => 'Click',
'#ajax' => array(
'callback' => '_kf_reading_user_points',
'wrapper' => 'reading-user-points',
'method' => 'replace',
'event' => 'click',
),
);
function _kf_reading_user_points(&$form, &$form_state) {
// Something within the callback function.
}
จากนั้นเหตุการณ์ jquery .click () จะทำงานในรูปแบบ drupal ajax
คุณยังสามารถใช้.trigger()
วิธี jQuery$('#element').trigger('click');
ในกรณีของฉันการแก้ปัญหาที่แนะนำข้างต้นไม่ได้ผลสำหรับฉัน แต่การกล่าวถึง. mousedown () ทำให้เกิดแนวคิดต่อไปนี้ที่เหมาะกับฉัน (Drupal 7):
$('#custom-submit-button').click(function() {
$('#ajax-submit-button').trigger('mousedown');
});
มีข้อมูลพื้นฐานที่เป็นประโยชน์เกี่ยวกับ "สาเหตุ" ในกรณีนี้ในการอ้างอิงแบบฟอร์ม API ภายใต้#ajax_prevent
ดูที่โมดูลตัวกรองการเปิดเผยที่ดีกว่าพวกเขาส่งแบบฟอร์ม AJAX โดยค้นหา $ (. ctools-auto-submit-click ') และเปิดการคลิก
<?php
// ... near line 190 of better_exposed_filters.js
// Click the auto submit button.
$(this).parents('form').find('.ctools-auto-submit-click').click();
?>
คุณต้องทริกเกอร์submit
เหตุการณ์ในแบบฟอร์ม Click
และmousedown
กิจกรรมบนปุ่มไม่ทำงาน