কীভাবে প্রোগ্রামে কোনও এজেএক্স সক্ষম ফর্ম জমা বোতামটিতে ক্লিক ক্লিক করুন?


25

আমি প্রোগ্রামগতভাবে (jQuery সহ) একটি দ্রুপাল আকারে AJAX আচরণের সাথে বোতামের একটি ক্লিককে ট্রিগার করার চেষ্টা করছি, তবে এখনও পর্যন্ত jQuery('#edit-submit').click()কিছুই করেনি।

সেই বোতামটিতে একটি আসল মাউস ক্লিক ইচ্ছাকৃতভাবে কাজ করে। কোনও ধারণা কীভাবে এটি কাজ করবে?


যদি এটি # সম্পাদনা-জমা বোতাম হয় তবে আপনি কি কেবল just ('ফর্ম') করতে পারবেন না? জমা দিন ()?
cam8001

এটি আমার পক্ষেও কার্যকর হয়নি। এটি হয় ফর্মটি অ-অজ্যাক্স উপায়ে পোস্ট করে বা কিছুই করে না, ফর্ম নির্মাতার কিছু সেটিংসের উপর নির্ভর করে।
ড্যানিয়েল

উত্তর:


40

jQuery('#edit-submit').mousedown() - সম্ভবত একটি বড় পার্থক্য আছে।


3
আমার জন্য কাজ করে না
ram4nd

এই সমাধানটি আমার পক্ষে কাজ করেছিল। বোতামে ক্লিক করা এজাক্স কলটি কার্যকর করেছে কিন্তু। ক্লিক () বা তারতম্যগুলি অবশ্য করেন নি ou মোডাসাউন () নিখুঁতভাবে কাজ করে।
এরিক গুডউইন

আমি ফর্ম উপাদানগুলিতে আইডি নির্বাচনকারী ব্যবহার করা এড়াতে চাই। যদি এজেএক্স কলব্যাক চলাকালীন ফর্মটি পুনর্নির্মাণ করা হয় তবে সমস্ত উপাদানগুলির আইডি পরিবর্তন হবে এবং আপনার jQuery নির্বাচনকারী আর কাজ করবে না।
ইউরি বাবেঙ্কো

ঠিক কী বলেছেন এরিক। আমি জানতে চাই কেন কেন পার্থক্য আছে ... গুরুত্ব সহকারে, এটি বোধগম্য নয়।
জনাথন এলমোর

@ জোনাথন এলমোর mousedown()একটি click()ইভেন্টের "প্রথম অংশ" মাত্র , যা mouseup()ঘটলে সম্পূর্ণ হয়। আপনি যখন কোনও লিঙ্কে ক্লিক করেন এবং তারপরে আপনি লিঙ্কটির ক্ষেত্রের বাইরে মাউস ছেড়ে দেন, click()সাধারণত বরখাস্ত হয় না এবং লিঙ্কটি অনুসরণ করা হয় না। সম্ভবত একটি অজ্যাক্স কল mouseup()
কলতা

7

আসলে, অনুমান করার দরকার নেই।

আপনার ড্রুপাল আচরণগুলি ব্যবহার করা উচিত

Drupal.behaviors.yourFunctionName = {
    attach:function (context, settings) {

       // Your code goes here....

    }
}

এটি আপনাকে সেটিংসের এজাক্স সম্পত্তিটিতে অ্যাক্সেস দেবে,

Drupal.behaviors.yourFunctionName = {
    attach:function (context, settings) {

       console.log(settings.ajax);

    }
}

আপনার কনফিগারেশনের উপর নির্ভর করে, আপনাকে কলিগ ফাংশনের নাম, নির্বাচকের আইডি পাশাপাশি ট্রিগার ইভেন্টের নাম সহ বিভিন্ন বৈশিষ্ট্য সহ ট্রিগার উপাদানগুলির একটি তালিকা দেখতে হবে।

তারপরে আপনি আপনার ইভেন্টটি ট্রিগার করতে প্রাসঙ্গিক তথ্য ব্যবহার করতে পারেন।

// $(selector).trigger(eventName);
// for example...
$('#edit-product-id-15', context ).trigger('change');

2
আমি এই উত্তরটি পছন্দ করি কারণ এটি একটি ড্রপাল প্রজেক্টে কাজ করে এমন নন-ড্রপাল ফ্রন্টট্যান্ড বিকাশকারীদের জন্য উত্পন্ন উপাদানগুলির সাথে ইন্টারফেস করার পদ্ধতিটি আবিষ্কার করার জন্য একটি আকর্ষণীয় কৌশল সরবরাহ করে। +1
লেস্টার পিবডি

6

নীচের মত এজাক্স জমা দিন।

 $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। ক্লিক () ইভেন্টটি ড্রুপাল এজাক্স আকারে কাজ করবে।


আপনি কি নমুনা কলব্যাক ফাংশনটি পোস্ট করতে পারেন, যখন আমি চেষ্টা করেছি, এটি কলব্যাক ফাংশনটি করবে না
Crazyrubixfan

1
কলব্যাক ফাংশন যুক্ত করেছে :)
লিওপাথু

3

আপনি .trigger()jQuery পদ্ধতিও ব্যবহার করতে পারেন ।$('#element').trigger('click');


3

আমার ক্ষেত্রে, উপরের প্রস্তাবিত সমাধানগুলি আমার পক্ষে কার্যকর হয়নি, তবে .মোসডাউন () উল্লেখ করার ফলে নিম্নলিখিত ধারণাটি তৈরি হয়েছিল যা আমার পক্ষে কাজ করেছে (দ্রুপাল)):

$('#custom-submit-button').click(function() {
  $('#ajax-submit-button').trigger('mousedown');
});

"কেন" সম্পর্কে কিছু সহায়ক ব্যাকগ্রাউন্ড তথ্য রয়েছে # জাজ্যাক_প্রিভেন্টের অধীনে ফর্ম এপিআই রেফারেন্সে এটি


আমার ক্লিক () মোড়কের দরকার ছিল না, তবে এজাক্স প্রতিরোধের সেই লিঙ্কটি ছিল কেই!
রায়ান হার্টম্যান

2

বেটার এক্সপোজড ফিল্টার মডিউলটির দিকে তাকিয়ে, তারা J (। Ctools- স্বয়ং-জমা-ক্লিক ') সন্ধান করে এবং একটি ক্লিক ট্রিগার করে AJAX ফর্মটি জমা দেয়।

<?php
// ... near line 190 of better_exposed_filters.js

// Click the auto submit button.
$(this).parents('form').find('.ctools-auto-submit-click').click();
?>

ক্লিক ইভেন্টটি আমার পক্ষে কাজ করেছিল, যেখানে মোডাউনড ইভেন্টটি করেনি।
aross

0

আপনাকে submitফর্মটিতে ইভেন্টটি ট্রিগার করতে হবে । Clickএবং mousedownবোতামগুলির ইভেন্টগুলি কাজ করছে না।


এটি আমি প্রথমে চেষ্টা করেছি এবং এটি সঠিকভাবে কাজ করছে বলে মনে হয় না। যা আমি এখানে এসেছি।
সারা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.