নোট যে datalistএকটি হিসাবে একই নয় select। এটি ব্যবহারকারীদের এমন একটি কাস্টম মান প্রবেশের অনুমতি দেয় যা তালিকায় নেই এবং এটি প্রথমে সংজ্ঞা না দিয়ে এই জাতীয় ইনপুটটির জন্য বিকল্প মান পাওয়া অসম্ভব।
ব্যবহারকারীর ইনপুট হ্যান্ডেল করার সম্ভাব্য উপায়গুলি হ'ল প্রবেশমূল্যটি যথাযথভাবে জমা দেওয়া, একটি ফাঁকা মান জমা দেওয়া বা জমা দেওয়া বাধা দেওয়া। এই উত্তরটি কেবল প্রথম দুটি বিকল্প পরিচালনা করে।
আপনি যদি পুরোপুরি ব্যবহারকারীর ইনপুটটিকে অস্বীকার করতে চান selectতবে সম্ভবত এটি আরও ভাল পছন্দ।
optionড্রপডাউনটিতে কেবলমাত্র পাঠ্যের মানটি দেখানোর জন্য আমরা এর জন্য অভ্যন্তরীণ পাঠ্যটি ব্যবহার করি এবং valueবৈশিষ্ট্যটি রেখে দিই । আমরা আসল মানটি যেটি বরাবর প্রেরণ করতে চাই তা একটি কাস্টম data-valueঅ্যাট্রিবিউটে সংরক্ষণ করা হয় :
এটি জমা দেওয়ার data-valueজন্য আমাদের একটি ব্যবহার করতে হবে <input type="hidden">। এক্ষেত্রে আমরা name="answer"নিয়মিত ইনপুটটি ছেড়ে দিয়ে লুকানো অনুলিপিটিতে স্থানান্তরিত করি।
<input list="suggestionList" id="answerInput">
<datalist id="suggestionList">
<option data-value="42">The answer</option>
</datalist>
<input type="hidden" name="answer" id="answerInput-hidden">
এইভাবে, যখন মূল ইনপুটটিতে পাঠ্য পরিবর্তন হয় তখন আমরা জাভাস্ক্রিপ্ট ব্যবহার করে পাঠ্যটি উপস্থিত রয়েছে কিনা তা যাচাই করতে datalistএবং এরটি আনতে পারি data-value। এই মানটি লুকানো ইনপুটটিতে sertedোকানো এবং জমা দেওয়া হয়।
document.querySelector('input[list]').addEventListener('input', function(e) {
var input = e.target,
list = input.getAttribute('list'),
options = document.querySelectorAll('#' + list + ' option'),
hiddenInput = document.getElementById(input.getAttribute('id') + '-hidden'),
inputValue = input.value;
hiddenInput.value = inputValue;
for(var i = 0; i < options.length; i++) {
var option = options[i];
if(option.innerText === inputValue) {
hiddenInput.value = option.getAttribute('data-value');
break;
}
}
});
আইডি answerএবং answer-hiddenনিয়মিত এবং লুকানো ইনপুটটিতে স্ক্রিপ্টের জন্য কোন ইনপুটটি কোন লুকানো সংস্করণের অন্তর্ভুক্ত তা জানতে প্রয়োজনীয়। inputএক বা একাধিক datalistএর পরামর্শ সরবরাহের মাধ্যমে একই পৃষ্ঠায় একাধিক গুলি থাকা সম্ভব ।
যে কোনও ব্যবহারকারীর ইনপুট যেমন জমা দেওয়া হয়। ব্যবহারকারী ইনপুট যখন ডেটালিস্টে উপস্থিত না থাকে একটি খালি মান জমা দিতে, এতে পরিবর্তন hiddenInput.value = inputValueকরুনhiddenInput.value = ""
ওয়ার্কিং জেএসফিডেল উদাহরণ: সরল জাভাস্ক্রিপ্ট এবং jQuery
value=""ট্যাগগুলির মধ্যে একটি স্ট্রিংয়ের চেয়ে বেশি অগ্রাধিকার নেওয়া উচিত, যখনই কোনওvalue=""ঘোষনা করা হয়। সুতরাং পরামর্শটি হ'ল আপনার উত্তরটির বৈশিষ্ট্যটি "উত্তর" করুন।