जवाबों:
आप उपयोग कर सकते हैं .change()
$('input[name=myInput]').change(function() { ... });
हालाँकि, यह ईवेंट केवल तभी फायर करेगा जब चयनकर्ता ने फोकस खो दिया है, इसलिए आपको यह काम करने के लिए कहीं और क्लिक करना होगा।
अगर वह बहुत सही आप के लिए नहीं है, आप अन्य से कुछ का उपयोग कर सकता है jQuery की घटनाओं की तरह KeyUp , keydown या कुंजी दबाने - आप चाहते हैं सही प्रभाव पर निर्भर करता है।
change
केवल आग लग जाएगी जब इनपुट तत्व ने फोकस खो दिया है। वहाँ भी input
घटना है जो पाठ बॉक्स जब भी यह ध्यान खोने की जरूरत के बिना अद्यतन करता है आग। प्रमुख घटनाओं के विपरीत यह पाठ को चिपकाने / खींचने के लिए भी काम करता है।
change
IE9 द्वारा समर्थित नहीं है, आप focusout
जैसा @pimvdb ने अपनी टिप्पणी में कहा,
ध्यान दें कि परिवर्तन केवल तभी होगा जब इनपुट तत्व ने अपना ध्यान खो दिया हो। इनपुट ईवेंट भी है जो फ़ोकस को खोने की आवश्यकता के बिना जब भी टेक्स्टबॉक्स अपडेट करता है तो आग लग जाती है। प्रमुख घटनाओं के विपरीत यह पाठ को चिपकाने / खींचने के लिए भी काम करता है।
( प्रलेखन देखें ।)
यह इतना उपयोगी है, यह एक जवाब में डालने लायक है। वर्तमान में (v1.8 *?) वहाँ है .input () सुविधा fn jquery में, इसलिए इसे करने का तरीका
$('input.myTextInput').on('input',function(e){
alert('Changed!')
});
$('form').on('change input', function);
मेरे लिए चाल है। धन्यवाद।
मैं नीचे की तरह कीअप इवेंट का उपयोग करने का सुझाव दूंगा:
$('elementName').keyup(function() {
alert("Key up detected");
});
उसी परिणाम को प्राप्त करने के कुछ तरीके हैं, इसलिए मुझे लगता है कि यह वरीयता के लिए नीचे है और इस पर निर्भर करता है कि आप इसे कैसे ठीक से काम करना चाहते हैं।
अपडेट: यह केवल मैनुअल इनपुट के लिए काम करता है कॉपी और पेस्ट नहीं।
कॉपी और पेस्ट के लिए मैं निम्नलिखित की सिफारिश करूंगा:
$('elementName').on('input',function(e){
// Code here
});
यहाँ मैं उपयोग कोड है:
$("#tbSearch").on('change keyup paste', function () {
ApplyFilter();
});
function ApplyFilter() {
var searchString = $("#tbSearch").val();
// ... etc...
}
<input type="text" id="tbSearch" name="tbSearch" />
यह काफी अच्छी तरह से काम करता है, खासकर जब एक jqGrid
नियंत्रण के साथ जोड़ा जाता है । आप बस एक टेक्स्टबॉक्स में टाइप कर सकते हैं और तुरंत अपने में परिणाम देख सकते हैं jqGrid
।
ऐसा करने के लिए एक और केवल एक विश्वसनीय तरीका है , और यह एक अंतराल में मूल्य को खींचकर एक कैश्ड मूल्य से तुलना करना है।
यही कारण है कि यह एकमात्र तरीका है क्योंकि विभिन्न इनपुट्स (कीबोर्ड, माउस, पेस्ट, ब्राउज़र इतिहास, वॉइसिनपुट आदि) का उपयोग करके इनपुट फ़ील्ड को बदलने के कई तरीके हैं और आप किसी क्रॉस में मानक घटनाओं का उपयोग करके उन सभी का कभी पता नहीं लगा सकते हैं। -पर्यावरण का वातावरण।
सौभाग्य से, jQuery में घटना के बुनियादी ढांचे के लिए धन्यवाद, अपने स्वयं के इनपुटचेंज घटना को जोड़ना काफी आसान है। मैंने यहाँ ऐसा किया:
$.event.special.inputchange = {
setup: function() {
var self = this, val;
$.data(this, 'timer', window.setInterval(function() {
val = self.value;
if ( $.data( self, 'cache') != val ) {
$.data( self, 'cache', val );
$( self ).trigger( 'inputchange' );
}
}, 20));
},
teardown: function() {
window.clearInterval( $.data(this, 'timer') );
},
add: function() {
$.data(this, 'cache', this.value);
}
};
इसका उपयोग करें जैसे: $('input').on('inputchange', function() { console.log(this.value) });
यहाँ एक डेमो है: http://jsfiddle.net/LGAWY/
यदि आप कई अंतरालों से डरते हैं, तो आप इस ईवेंट को focus
/ पर बाँध / अनबाइंड कर सकते हैं blur
।
$('body').on('inputchange', 'input', function() { console.log(this.value) });
:? या नहीं, जैसा कि यहाँ बताया गया है: github.com/EightMedia/hammer.js/pull/98 ?
<input id="item123" class="firstName" type="text" value="Hello there" data-someattr="CoolExample" />
$(".firstName").on('change keyup paste', function () {
var element = $(this);
console.log(element);
var dataAttribute = $(element).attr("data-someattr");
console.log("someattr: " + dataAttribute );
});
मैं this
पूरे तत्व तक पहुंचने के लिए कीवर्ड का उपयोग करने की सलाह देता हूं ताकि आप इस तत्व के साथ अपनी जरूरत का हर काम कर सकें।
यदि यह डायनेमिक / अजाक्स कॉल है तो भी निम्नलिखित कार्य करेगा।
स्क्रिप्ट:
jQuery('body').on('keyup','input.addressCls',function(){
console.log('working');
});
एचटीएमएल,
<input class="addressCls" type="text" name="address" value="" required/>
मुझे उम्मीद है कि यह कार्य कोड किसी ऐसे व्यक्ति की मदद करेगा जो गतिशील रूप से / अजाक्स कॉल का उपयोग करने की कोशिश कर रहा है ...
आप बस आईडी के साथ काम कर सकते हैं
$("#your_id").on("change",function() {
alert(this.value);
});
आप इसे अलग-अलग तरीकों से कर सकते हैं, कीप उनमें से एक है। लेकिन मैं बदलाव के साथ नीचे उदाहरण दे रहा हूं।
$('input[name="vat_id"]').on('change', function() {
if($(this).val().length == 0) {
alert('Input field is empty');
}
});
NB: इनपुट [नाम = "vat_id"] अपने इनपुट आईडी या नाम से बदलें ।
यदि आप घटना को टाइप करना चाहते हैं , तो निम्न का उपयोग करें:
$('input[name=myInput]').on('keyup', function() { ... });
यदि आप इनपुट फ़ील्ड छोड़ने पर ईवेंट को ट्रिगर करना चाहते हैं , तो निम्न का उपयोग करें:
$('input[name=myInput]').on('change', function() { ... });
$(document).on('change', 'input[name=myInput]', function() { ... });
$("input").change(function () {
alert("Changed!");
});
आप उपयोग कर सकते हैं .keypress()
।
उदाहरण के लिए, HTML पर विचार करें:
<form>
<fieldset>
<input id="target" type="text" value="Hello there" />
</fieldset>
</form>
<div id="other">
Trigger the handler
</div>
ईवेंट हैंडलर इनपुट फ़ील्ड के लिए बाध्य हो सकता है:
$("#target").keypress(function() {
alert("Handler for .keypress() called.");
});
मैं एंडी के साथ पूरी तरह से सहमत हूं; सभी इस बात पर निर्भर करते हैं कि आप इसे कैसे काम करना चाहते हैं।