উত্তর:
এই মুহূর্তে কোনও ইভেন্ট ট্রিগার করা হয়নি (7.৩৪ হিসাবে), তবে এই ইস্যুতে একটি প্যাচ রয়েছে যা আপনাকে এই জাতীয় কিছু ব্যবহার করতে দেবে:
$('#input-id').on('autocompleteSelect', function(event, node) {
});
বা আপনি যদি jQuery এর পুরানো সংস্করণ ব্যবহার করছেন
$('#input-id').bind('autocompleteSelect', function(event, node) {
});
node
নির্বাচিত আইটেমটি কোথায় । আপনি tid
যে বস্তুর বৈশিষ্ট্যগুলির মধ্যে একটি থেকে পেতে সক্ষম হওয়া উচিত ।
ড্রুপাল 7 এবং 8 এই মুহুর্তে কোনও কাস্টম কোড ছাড়াই jQuery স্বয়ংক্রিয়রূপে ইভেন্ট জেনারেশন সরবরাহ করে।
ড্রুপাল 7 এ, autocompleteSelect
ইভেন্টটি ড্রুপাল ইস্যুতে যোগ করা হয়েছে # 365241 । (ক্লাইভ তার প্রতিক্রিয়া পোস্ট করার সময় এটি অগ্রগতির কথা উল্লেখ করেছিলেন।)
ড্রুপাল 8 jQuery UI স্ব-পরিপূর্ণ উইজেট ব্যবহার করে । autocompleteclose
ঘটনা D7 সবচেয়ে অনুরূপ jQuery এর UI 'তে ঘটনা autocompleteSelect
ইভেন্ট। ডি 8-এ জিকুয়ারি ইউআই autocompleteselect
ইভেন্টটিও ট্রিগার করা হবে তবে এতে একটি অ্যাজাক্স কলব্যাক আপডেট হওয়া ফর্মের রাষ্ট্রীয় মানগুলি গ্রহণ করবে না। autocompleteclose
কলব্যাকগুলি আপডেট ফর্মের রাষ্ট্রীয় মানগুলি সরবরাহ করে, যা সাধারণত আপনি চান।
অন্যান্য উত্তরগুলি সূচিত হিসাবে, আপনি ক্লায়েন্ট ব্রাউজারে ইভেন্টের ডেটা ব্যবহার করতে পারেন ইভেন্ট হ্যান্ডলার, বা ড্রুপাল.বিহ্যাভিয়ার্স ( ড্রুপাল D , দ্রুপাল ৮ ) এর jQuery ব্যবহার করে । Drupal এর 7 এ আপনি ব্যবহার করেন ইভেন্ট, এবং Drupal এর 8 ।autocompleteSelect
autocompleteclose
আপনার পিএইচপি কোডে যদি মানটির প্রয়োজন হয় তবে একটি অ্যাজাক্স কলব্যাক ব্যবহার করা যেতে পারে। ড্রুপাল 7 এ বা দ্রুপাল 8 এ এটি কীভাবে করা যায় তার জন্য এখানে কিছু দিকনির্দেশ রয়েছে ।
এটি কাজ করার জন্য আমার একটি আচরণ ব্যবহার করা দরকার (ক্লাইভ দ্বারা উল্লিখিত সমস্যাটির জন্য ধন্যবাদ, এবং এই মন্তব্য: https://www.drupal.org/node/365241# কমেন্ট -9575707 ):
Drupal.behaviors.autocompleteSupervisor = {
attach: function (context) {
$('#edit-field-foo-und-0-target-id', context).bind('autocompleteSelect', function(event, node) {
// Do custom stuff here...
var entity_id = $(this).val().replace($(node).text().trim(), '').replace(/\(|\)| /g, '');
});
}
};
ড্রুপাল 8 এ এটি সরে গেছে। আপনি নিম্নলিখিত কোড সহ কার্যকারিতা ওভাররাইড করতে পারেন।
/**
* Handles an autocompleteselect event.
*
* Override the autocomplete method to add a custom event.
*
* @param {jQuery.Event} event
* The event triggered.
* @param {object} ui
* The jQuery UI settings object.
*
* @return {bool}
* Returns false to indicate the event status.
*/
Drupal.autocomplete.options.select = function selectHandler(event, ui) {
var terms = Drupal.autocomplete.splitValues(event.target.value);
// Remove the current input.
terms.pop();
// Add the selected item.
if (ui.item.value.search(',') > 0) {
terms.push('"' + ui.item.value + '"');
}
else {
terms.push(ui.item.value);
}
event.target.value = terms.join(', ');
// Fire custom event that other controllers can listen to.
jQuery(event.target).trigger('autocomplete-select');
// Return false to tell jQuery UI that we've filled in the value already.
return false;
}
কোডটি ওভাররাইড করে core/misc/autocomplete.js
।
তারপরে আপনার কোডটিতে আপনি শুনতে পারেন
var field = jQuery('<field-selector>');
var lastField = ''
field.on('autocomplete-select', function() {
console.log("autocompleteSelect");
// Check that field actually changed.
if ($(this).val() != lastValue) {
lastValue = $(this).val();
console.log('The text box really changed this time');
}
})