ฉันสร้างคำถามใหม่ด้วยข้อมูลที่ถูกต้องมากขึ้น (คำถามเดิม แบบฟอร์มที่มีปัญหา ajax และ javascript).
ฉันมีปุ่มในแบบฟอร์มที่สร้าง fieldset ผ่าน ajax เมื่อฉันพยายามติดตามปุ่มนี้ที่ถูกคลิกด้วย jQuery มันไม่เห็นปุ่มนี้ รหัสปุ่มแสดงอยู่ด้านล่าง
ฉันพยายามติดตามโดยใช้เพียงอินพุตเป็นตัวเลือก แต่ก็ยังใช้งานไม่ได้ Javascript เชื่อมต่อกันพอดี เมื่อฉันคลิกที่ปุ่มส่ง ผลลัพธ์จะอยู่ที่นั่น
นี่คือรหัส php
ฟังก์ชันสาธารณะ buildForm (อาร์เรย์ $form, FormStateInterface $form_state) {
$config = \Drupal::config('pizza_javascript.settings');
$type_pizza_config = $config->get('ประเภทพิซซ่า');
$district_config = $config->get('เขต');
$sum_order =0;
foreach ($type_pizza_config เป็น $key=>$name){
$pizza_type[$name['ราคา']] = $name['ชื่อ'];
}
foreach ($district_config เป็น $key=>$name){
$blocks[$name['ราคา']] = $name['name'];
}
$num_pizza = $form_state->get('num_pizza');
ถ้า ($num_pizza === NULL) {
$pizza_field = $form_state->set('num_pizza', 1);
$num_pizza = 1;
}
$แบบฟอร์ม['pizza_fieldset_general'] = [
'#type' => 'ชุดฟิลด์',
'#tree' => จริง,
'#title' => $this->t('คำสั่งซื้อ'),
'#prefix' => '<div id="pizza-fieldset-general-wrapper">',
'#suffix' => '</div>',
];
สำหรับ ($i = 0; $i < $num_pizza; $i++) {
$form['pizza_fieldset_general']['pizza_fieldset'][$i] = [
'#type' => 'ชุดฟิลด์',
'#tree' => จริง,
'#title' => $this->t('สั่งพิซซ่า'),
];
$form['pizza_fieldset_general']['pizza_fieldset'][$i]['ชื่อ'] = [
'#type' => 'เลือก',
'#title' => $this->t('พิมพ์พิซซ่า'),
'#tree' => จริง,
'#options' => $pizza_type,
'#default_value' => '940',
'#attributes' => ['id' => 'select-pizza-'.$i],
];
$form['pizza_fieldset_general']['pizza_fieldset'][$i]['count'] = [
'#type' => 'เลือก',
'#title' => $this->t('นับพิซซ่า'),
'#tree' => จริง,
'#options' => ช่วง(0, 10),
'#attributes' => ['id' => 'select-count-'.$i],
];
}
$form['pizza_fieldset_general']['การกระทำ'] = [
'#type' => 'การกระทำ',
];
$form['pizza_fieldset_general']['actions']['add_pizza'] = [
'#type' => 'ส่ง',
'#value' => $this->t('เพิ่มพิซซ่าหนึ่งถาด'),
'#submit' => ['::addOnePizza'],
'#อาแจ็กซ์' => [
'callback' => '::addmorepizzaCallback',
'wrapper' => 'pizza-fieldset-general-wrapper',
]
];
ถ้า ($num_pizza > 1) {
$form['pizza_fieldset_general']['actions']['remove_pizza'] = [
'#type' => 'ส่ง',
'#value' => $this->t('ลบหนึ่งรายการ'),
'#submit' => ['::removeCallback'],
'#อาแจ็กซ์' => [
'callback' => '::addmorepizzaCallback',
'wrapper' => 'pizza-fieldset-general-wrapper',
]
];
}
$รูปแบบ['บล็อก'] = [
'#title' => 'ลำดับเขต',
'#type' => 'วิทยุ',
'#options' => $blocks,
];
$แบบฟอร์ม['โทรศัพท์'] = [
'#type' => 'ช่องข้อความ',
'#title' => $this->t('หมายเลขโทรศัพท์'),
'#description' => $this->t('ตัวอย่างหมายเลขโทรศัพท์ +79261234567, 89261234567, 8(926)123-45-67'),
];
$แบบฟอร์ม['ที่อยู่'] = [
'#type' => 'ช่องข้อความ',
'#title' => $this->t('ลำดับที่อยู่'),
'#description' => $this->t('ที่อยู่ในการสั่งซื้อ'),
];
$แบบฟอร์ม['all_price'] = [
'#type' => 'ช่องข้อความ',
'#title' => $this->t('ลำดับราคา'),
'#attributes' => array('readonly' => 'readonly'),
];
$รูปแบบ['pizza_price'] = [
'#type' => 'ช่องข้อความ',
'#title' => $this->t('ราคาพิซซ่า'),
'#attributes' => array('readonly' => 'readonly'),
];
$form['actions']['submit'] = [
'#type' => 'ส่ง',
'#value' => $this->t('ส่ง'),
];
$form['#attached']['library'][] = 'pizza_javascript/pizzaJS';
$form['#attached']['drupalSettings']['data']['blockprice'] = $form_state->getValue('block');
$form['#attached']['drupalSettings']['data']['count_pizza'] = $num_pizza;
คืนฟอร์ม $;
}
ฟังก์ชั่นสาธารณะ addmorepizzaCallback (อาร์เรย์ &$form, FormStateInterface $form_state) {
ส่งคืน $form['pizza_fieldset_general'];
}
ฟังก์ชันสาธารณะ addOnePizza (อาร์เรย์ &$form, FormStateInterface $form_state) {
$pizza_field = $form_state->get('num_pizza');
$add_button = $pizza_field + 1;
$form_state->set('num_pizza', $add_button);
$form_state->setRebuild();
}
ฟังก์ชั่นสาธารณะ removeCallback (อาร์เรย์ & $ ฟอร์ม, FormStateInterface $ form_state) {
$pizza_field = $form_state->get('num_pizza');
ถ้า ($pizza_field > 1) {
$remove_button = $pizza_field - 1;
$form_state->set('num_pizza', $remove_button);
}
$form_state->setRebuild();
}
รหัสจาวาสคริปต์
(ฟังก์ชัน ($, Drupal) {
Drupal.behaviors.myBehavior = {
แนบ: ฟังก์ชัน (บริบท การตั้งค่า) {
$('#edit-pizza-fieldset-general-actions-add-pizza',context).on('click',function (){
console.log('สวัสดีชาวโลก!!!');
})
$('input').on('click',function (){
console.log('สวัสดีชาวโลก!!!');
})
}
}
})(jQuery, Drupal);
เนื่องจากฉันติดตามองค์ประกอบอินพุต ฟิลด์สร้างปุ่มจะต้องแสดง แต่สิ่งนี้จะไม่เกิดขึ้น
โปรดช่วยฉันเข้าใจว่าปัญหาคืออะไร ขอโทษสำหรับภาษาอังกฤษของฉัน ฉันใช้ google แปล