विकल्पों के शीर्ष पर "सभी साफ़ करें" लिंक जोड़ें I Jquery's Selectize टैगिंग लाइब्रेरी का उपयोग कर रहा हूं जो अब तक मेरे लिए अच्छा काम करता है।Jquery Selectize अजाक्स
नीचे कोड मैंने उपयोग किया है।
जावास्क्रिप्ट कोड:
$('#q').selectize({
plugins: ['remove_button'],
valueField: 'address',
labelField: 'address',
searchField: 'address',
create: true,
render: {
item: function(data, escape) {
return '<div>' + escape(data.address) + '</div>';
}
},
onChange: function(value) {
$(".selectize-input input[placeholder]").attr("style", "width: 100%;");
},
load: function(query, callback) {
if (!query.length) return callback();
$.ajax({
url: base_url + '/search-property-autocomplete',
type: 'POST',
dataType: 'json',
data: {
q: query,
},
error: function() {
callback();
},
success: function(res) {
console.log(res.properties);
callback(res.properties);
}
});
}
});
पीएचपी कोड:
/* API for autocomplete list of properties */
Route::post('/search-property-autocomplete', function() {
if (!empty(trim($_POST['q']))) {
$search_term = trim($_POST['q']);
// getting Suburb State and Postcode of the properties based on search
$query = Property::join('technobrave_suburbs_', function($join) {
$join->on('technobrave_properties_.suburb_id', '=', 'technobrave_suburbs_.id');
});
$query->join('technobrave_states_', function($join) {
$join->on('technobrave_properties_.state_id', '=', 'technobrave_states_.id');
});
$query->select('technobrave_properties_.*', 'technobrave_suburbs_.suburb', 'technobrave_states_.state_name');
$query->where(function($query) use ($search_term) {
$query->where('technobrave_properties_.post_code', 'LIKE', '%' . $search_term . '%');
$query->orwhere('technobrave_suburbs_.suburb', 'LIKE', '%' . $search_term . '%');
$query->orwhere('technobrave_states_.state_name', 'LIKE', '%' . $search_term . '%');
});
$data = $query->take(8)->get(); // getting maximum 8 records only
if ($data) {
foreach ($data as $current_record) {
$result[] = array(
'address' => $current_record->suburb . ' ' . $current_record->state_name . ' ' . $current_record->post_code
);
}
}
} else {
$result = [];
}
echo json_encode(array('properties' => $result));
});
आप कोड ऊपर में देख सकते हैं, मैं अजाक्स का उपयोग कर रहा डेटा को भरने के लिए और मेरे php फोन करके रिकॉर्ड हो रही समारोह जो बिल्कुल ठीक काम कर रहा है।
अब, मैं अपने सभी परिणामों के शीर्ष पर एक हाइपरलिंक के रूप में एक आइटम जोड़ना चाहता हूं जैसे सभी साफ़ करें जो हर बार जब मैं अपने इनपुट-बॉक्स में खोज या टाइप करता हूं तो आ जाएगा।
और यदि मैं पर क्लिक करता हूं तो सभी लिंक साफ़ करें, नीचे दिए गए परिणाम साफ़ किए जाने चाहिए।
Selectize द्वारा प्रदान की clearoptions()
घटना का उपयोग करने के लिए, मैं अद्यतन किया है मेरी create:
के साथ अपने जावा स्क्रिप्ट कोड में:
create: function(input, callback) {
$.ajax({
url: base_url + '/search-property-autocomplete',
type: 'POST',
dataType: 'json',
data: {
q: query,
},
error: function() {
callback();
},
success: function(res) {
return callback({ address: "<a href='javascript:void(0)'>Clear All</a>" });
}
});
},
लेकिन यह के रूप में मैं वहाँ मेरे अतिरिक्त विकल्प देखने के लिए असमर्थ हूँ काम नहीं कर रहा है। मेरे परिणाम पॉप्युलेट होने के बाद मैं अपने हाइपरलिंक को देखने में असमर्थ हूं।
मुझे पहले से ही पता है कि नीचे दिए गए कोड जैसे somethink का उपयोग करने से मुझे पता चलने के बाद मेरे आबादी वाले रिकॉर्ड हटा दिए जाएंगे।
$('.my-hyperlink-custom-class').on('click', function() {
control.clearOptions();
});
लेकिन मैं इस नए आइटम को अपने कोड में जोड़ने या दबाकर परिणामों को अजाक्स का उपयोग करके पॉप्युलेट कर रहा हूं।
क्या कोई मुझे मार्गदर्शन कर सकता है कि मैं इसे कैसे प्राप्त कर सकता हूं।
आपके उत्तर ने मुझे किसी भी तरह से हल करने या लागू करने में मेरी सहायता करने में मदद की। इसलिए मैं बक्षीस पुरस्कार देने के लिए आपका उत्तर चुन रहा हूं। हालांकि, मैंने अपना जवाब अंतिम कोड के रूप में प्रदान किया है अगर कोई एक ही मुद्दे पर फंस गया जहां मैंने किया था। धन्यवाद। –
[यहां] (https://stackoverflow.com/a/46398821/6829420) जो मैं आया था। –