ইভেন্টে jquery ব্যবহার .changeকরার inputসময় কেবল ইনপুট ফোকাস হারাতে হবে
আমার ক্ষেত্রে, ইনপুট মান পরিবর্তন হওয়ার সাথে সাথে আমাকে পরিষেবাতে (মানটি বৈধ কিনা তা পরীক্ষা করে দেখুন)। আমি কীভাবে এটি সম্পাদন করতে পারি?
ইভেন্টে jquery ব্যবহার .changeকরার inputসময় কেবল ইনপুট ফোকাস হারাতে হবে
আমার ক্ষেত্রে, ইনপুট মান পরিবর্তন হওয়ার সাথে সাথে আমাকে পরিষেবাতে (মানটি বৈধ কিনা তা পরীক্ষা করে দেখুন)। আমি কীভাবে এটি সম্পাদন করতে পারি?
উত্তর:
ব্যাখ্যা এবং উদাহরণের জন্য আপডেট করা D
উদাহরণ: http://jsfiddle.net/pxfunc/5kpeJ/
পদ্ধতি 1. inputইভেন্ট
আধুনিক ব্রাউজারগুলিতে inputইভেন্টটি ব্যবহার করুন । ব্যবহারকারী যখন কোনও পাঠ্য ক্ষেত্রে টাইপ করে, আটকানো, পূর্বাবস্থায় ফেলা হয়, মূলত যে কোনও সময় মান একটি মান থেকে অন্যটিতে পরিবর্তিত হয় যখন এই ইভেন্টটি ছড়িয়ে যাবে।
JQuery এ এটি করুন
$('#someInput').bind('input', function() {
$(this).val() // get the current value of the input field.
});
jQuery এর 1.7 দিয়ে শুরু, প্রতিস্থাপন bindসঙ্গে on:
$('#someInput').on('input', function() {
$(this).val() // get the current value of the input field.
});
পদ্ধতি 2. keyupইভেন্ট
পুরানো ব্রাউজারগুলির জন্য keyupইভেন্টটি ব্যবহার করুন (কীবোর্ডের কীটি প্রকাশের পরে এটি একবার জ্বলে উঠবে, এই ইভেন্টটি এক ধরণের ভুল ধনাত্মকতা দিতে পারে কারণ "ডাব্লু" প্রকাশিত হলে ইনপুট মান পরিবর্তন করা হয় এবং keyupইভেন্টটি জ্বলতে থাকে, তবে যখন "শিফট" কীটি keyupইভেন্টের আগুনে প্রকাশিত হয়েছে তবে ইনপুটটিতে কোনও পরিবর্তন আনা হয়নি।) এছাড়াও ব্যবহারকারী যদি প্রসঙ্গ মেনু থেকে ডান ক্লিক করে এবং পেস্ট করে তবে এই পদ্ধতিটি চালিত হবে না:
$('#someInput').keyup(function() {
$(this).val() // get the current value of the input field.
});
পদ্ধতি 3. টাইমার ( setIntervalবা setTimeout)
আপনার সীমাবদ্ধতাগুলি পেতে keyupআপনি একটি টাইমার সেট করতে পারেন পর্যায়ক্রমে ইনপুটটির মান পরিবর্তন পরিবর্তন নির্ধারণ করতে check আপনি এই টাইমার চেকটি ব্যবহার করতে setIntervalবা করতে পারেন setTimeout। এই এসও প্রশ্নের চিহ্নিত উত্তরটি দেখুন: jQuery টেক্সটবক্স পরিবর্তন ইভেন্ট বা একটি নির্দিষ্ট ইনপুট ক্ষেত্রের জন্য টাইমার শুরু করতে এবং টাইমার শুরু করতে focusএবং blurইভেন্টগুলি ব্যবহার করে কোনও কাজের উদাহরণের জন্য শিখরটি দেখুন
innerTextবা valueঅ্যাট্রিবিউটকে ( সিমুলেটিং ব্যবহারকারী ইনপুট) কোনও মিউটেশনঅবার্সার ইভেন্টকে ট্রিগার করবে jsfiddle.net/pxfunc/ 04chgpws / 1 ( মিউটেশনঅবার্সার ইভেন্ট লগিংয়ের জন্য কনসোল.লগ দেখুন)। আপনার কি অন্যরকম পরীক্ষার কেস আছে যা আমি দেখতে পারি?
আপনি যদি এইচটিএমএল 5 পেয়ে থাকেন:
oninput (পরিবর্তন যখন ঘটে তখনই গুলি চালায় তবে তা তাত্ক্ষণিকভাবে ঘটে)অন্যথায় আপনাকে এই সমস্ত ইভেন্টের জন্য যাচাই করা দরকার যা ইনপুট উপাদানটির মানটির পরিবর্তন হতে পারে:
onchange onkeyup( না keydown বা keypressইনপুট মান এখনো নতুন কীস্ট্রোক থাকবে না হিসাবে)onpaste (যখন সমর্থিত)এবং হয়ত:
onmouseup (আমি এটি সম্পর্কে নিশ্চিত নই)এইচটিএমএল 5 এবং jQuery ব্যবহার না করে, আপনি inputইভেন্টটি ব্যবহার করতে পারেন :
var input = document.querySelector('input');
input.addEventListener('input', function()
{
console.log('input changed to: ', input.value);
});
এটি প্রতিবার ইনপুটটির পাঠ্য পরিবর্তিত হবে।
IE9 + এবং অন্যান্য ব্রাউজারগুলিতে সমর্থিত।
এটি এখানে একটি জেএসফিডেলে লাইভ চেষ্টা করুন ।
অন্যরা ইতিমধ্যে পরামর্শ হিসাবে, আপনার ক্ষেত্রে সমাধানটি হ'ল একাধিক ঘটনা স্নিগ্ধ করা ।
এই কাজটি করা প্লাগিনগুলি প্রায়শই নিম্নলিখিত ইভেন্টগুলির জন্য শোনেন:
। ইনপুট চালু ( 'কীডাউন কীপ্রেস কীআপটি মাউসডাউন ক্লিক করুন মাউসআপ ক্লিক করুন') , হ্যান্ডলার );
যদি আপনি মনে করেন এটি উপযুক্ত হতে পারে তবে আপনি যোগ করতে পারেন focus,blur এবং অন্যান্য ঘটনা খুব।
আমি শুনতে ইভেন্টগুলিকে অতিক্রম না করার পরামর্শ দিই, কারণ এটি ব্যবহারকারীর আচরণ অনুসারে কার্যকর করার জন্য ব্রাউজারের মেমরির আরও প্রক্রিয়া লোড করে।
মনোযোগ দিন: নোট করুন যে জাভাস্ক্রিপ্টের সাথে একটি ইনপুট উপাদানটির মান পরিবর্তন করা (উদাহরণস্বরূপ jQuery .val()পদ্ধতির মাধ্যমে ) উপরের কোনও ঘটনাকে দমন করবে না।
(তথ্যসূত্র: https://api.jquery.com পরিবর্তন / )।
.val()উদাহরণস্বরূপ কল করতে পারেন যেমন কোনও ইনপুট ক্ষেত্রে কোনও পরিবর্তন ইভেন্টের জন্য, আপনি এরকম কিছু করতে চান ... $('#element').val(whatever).change()
যদি আপনি চান যে যখনই উপাদানটির মধ্যে কিছু পরিবর্তন করা হয়েছে তখন ইভেন্টটি বরখাস্ত করা যেতে পারে তবে আপনি কীআপ ইভেন্টটি ব্যবহার করতে পারেন ।
onchange, বা নিজেই রাষ্ট্রটিকে ট্র্যাক করতে হবে। keydownকাজ করে না কারণ ইনপুটটির স্থিতি পরিবর্তিত হওয়ার আগেই এটি গুলি চালায় ।
উপাদান ফোকাস হারিয়ে ফেললে // .blur ট্রিগার হয়
$('#target').blur(function() {
alert($(this).val());
});
// ম্যানুয়ালি ব্যবহার ট্রিগার করতে:
$('#target').blur();
মত jQuery এর ঘটনা নেই keyup এবং কীপ্রেস যা আপনি ইনপুট এইচটিএমএল উপাদানের সঙ্গে ব্যবহার করতে পারেন। আপনি অতিরিক্তভাবে অস্পষ্ট () ইভেন্টটি ব্যবহার করতে পারেন ।
keypressইভেন্টের সময় আপনি নির্ভরযোগ্যভাবে কোনও ইনপুটটির মানটি পরীক্ষা করতে পারবেন না কারণ চাপানো কীটি এখনও সেই মানটি পরিবর্তন করতে পারে না।