घटना .change
पर jquery का उपयोग करते input
समय केवल तभी निकाल दिया जाएगा जब इनपुट फोकस खो देता है
मेरे मामले में, मुझे इनपुट वैल्यू में परिवर्तन होते ही सेवा को कॉल करना होगा (यदि मान मान्य है तो जाँच करें)। मैं इसे कैसे पूरा कर सकता हूं?
घटना .change
पर jquery का उपयोग करते input
समय केवल तभी निकाल दिया जाएगा जब इनपुट फोकस खो देता है
मेरे मामले में, मुझे इनपुट वैल्यू में परिवर्तन होते ही सेवा को कॉल करना होगा (यदि मान मान्य है तो जाँच करें)। मैं इसे कैसे पूरा कर सकता हूं?
जवाबों:
स्पष्टीकरण और उदाहरण के लिए अद्यतन
उदाहरण: 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
ईवेंट का उपयोग करें (यह कीबोर्ड पर एक बार कुंजी जारी करने के बाद आग लगाएगा, यह ईवेंट एक प्रकार का गलत पॉज़िटिव दे सकता है क्योंकि जब "w" रिलीज़ होता है तो इनपुट वैल्यू बदल जाती है और keyup
ईवेंट फ़ायर हो जाता है, लेकिन तब भी जब उपयोग हो "शिफ्ट" कुंजी keyup
घटना आग जारी की है, लेकिन इनपुट में कोई बदलाव नहीं किया गया है।) यदि उपयोगकर्ता राइट-क्लिक करता है और संदर्भ मेनू से चिपकता है तो भी यह विधि फायर नहीं करती है:
$('#someInput').keyup(function() {
$(this).val() // get the current value of the input field.
});
विधि 3. टाइमर ( setInterval
या setTimeout
)
keyup
आप की सीमाओं के आसपास पाने के लिए एक टाइमर सेट कर सकते हैं समय-समय पर मूल्य में बदलाव का निर्धारण करने के लिए इनपुट के मूल्य की जांच करें। आप इस टाइमर चेक का उपयोग setInterval
या कर सकते हैं setTimeout
। इस तो सवाल पर चिह्नित जवाब देखें: jQuery पाठ बॉक्स परिवर्तन घटना या एक काम उदाहरण का उपयोग के लिए बेला को देखने focus
और blur
घटनाओं शुरू करने और एक विशिष्ट इनपुट क्षेत्र के लिए टाइमर को रोकने के लिए
innerText
या value
विशेषता (उपयोगकर्ता इनपुट का अनुकरण) एक MutationObserver ईवेंट jsfun.net/pxfunc/ को ट्रिगर करेगा 04chpws / 1 (MutationObserver ईवेंट लॉगिंग के लिए कंसोल.लॉग देखें)। क्या आपके पास एक अलग परीक्षण मामला है जो मैं देख सकता हूं?
यदि आपको HTML5 मिल गया है:
oninput
(आग तभी लगती है जब वास्तव में कोई परिवर्तन होता है, लेकिन तुरंत ऐसा होता है)अन्यथा आपको इन सभी घटनाओं की जांच करने की आवश्यकता है जो इनपुट तत्व के मूल्य में बदलाव का संकेत दे सकती हैं:
onchange
onkeyup
( नहीं) keydown
या keypress
इनपुट के मूल्य अभी तक उस में नई कीस्ट्रोक नहीं होगा के रूप में)onpaste
(जब समर्थित)और शायद:
onmouseup
(मैं इस बारे में निश्चित नहीं हूं)HTML5 के साथ और 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/change/ )।
.val()
उदाहरण के लिए इनपुट क्षेत्र पर एक परिवर्तन ईवेंट के लिए, आप कुछ इस तरह करेंगे ... $('#element').val(whatever).change()
यदि आप चाहते हैं कि जब भी कुछ तत्व में परिवर्तन किया जाए, तो ईवेंट को निकाल दिया जाए, तो आप कीप इवेंट का उपयोग कर सकते हैं ।
onchange
, या राज्य को ट्रैक करना है। keydown
काम नहीं करता है क्योंकि यह इनपुट की स्थिति बदलने से पहले आग हो जाती है।
// .blur तब ट्रिगर होता है जब एलिमेंट फोकस खो देता है
$('#target').blur(function() {
alert($(this).val());
});
// मैन्युअल रूप से उपयोग करने के लिए ट्रिगर:
$('#target').blur();
की तरह jQuery ईवेंट नहीं है KeyUp और कुंजी दबाने जो आप इनपुट एचटीएमएल तत्वों के साथ उपयोग कर सकते हैं। आप अतिरिक्त रूप से ब्लर () ईवेंट का उपयोग कर सकते हैं ।
keypress
ईवेंट के दौरान किसी इनपुट के मान को मज़बूती से नहीं देख सकते क्योंकि दबाया गया कुंजी अभी तक उस मान को नहीं बदलेगा।