2010-02-11 37 views
44

मेरे पास मेरे पृष्ठ पर निम्न jQuery कोड है:jQuery textbox.val ('xxxx') आग में परिवर्तन नहीं कर रहा है?

var isChanged = false; 
$(document).ready(function() 
{ 
    $('.change').change(function() { 
     isChanged = true; 
    }); 
}); 

मैं एक प्लगइन का उपयोग कर रहा हूं जो टेक्स्ट बॉक्स के मान को संशोधित करता है जो इसे उपयोग करने के लिए लिंक किया गया है:

target.val('xxxx'); 

टेक्स्ट बॉक्स में एचटीएमएल (एएसपीनेट से) है:

<input name="ctl00$cphHolder1$rptFlex$ctl01$txtLeftRank" 
    type="text" 
    value="52°" 
    id="ctl00_cphHolder1_rptFlex_ctl01_txtLeftRank" 
    class="change atiselector" /> 

जब कोड का उपयोग कर टेक्स्ट बॉक्स का मूल्य बदल जाता है, तो परिवर्तन फायरिंग नहीं होता है। अगर मैं टेक्स्ट बॉक्स में टाइप करता हूं, तो परिवर्तन आग लग जाता है। मैं क्या खो रहा हूँ?

उत्तर

72

इस तरह से यह काम करता है।

$('input#whatever').val('hi').change(); 
+2

+1 बिल्कुल सही। –

+0

कभी भी बेवकूफ चीजों में से एक। इसे पैच वैल() से संवेदनात्मक रूप से व्यवहार करने के लिए –

+4

@AndrewBullock और यदि आपने यह "समझदार" पैच लागू किया है, तो संभवतः आप यह खोज लेंगे कि यह आपके ऐप के प्रदर्शन को काफी हद तक खराब कर देता है। – NobodyMan

4

$('.change').change() ईवेंट को आग लगा देगा। केवल गुणों को बदलना घटना को आग नहीं करता है।

2

अनुसार DOM Level 2 Event Specification लिए: आप मूल्य के परिवर्तन की जरूरत है "परिवर्तन" घटना को गति प्रदान करने, आप स्पष्ट रूप से ऐसा कर सकते हैं

परिवर्तन घटना तब होता है जब एक नियंत्रण इनपुट फ़ोकस खो देता है और इसका मूल्य फोकस प्राप्त करने के बाद संशोधित किया गया है।

इसका मतलब है कि परिवर्तन घटना उपयोगकर्ता इंटरैक्शन द्वारा परिवर्तन पर आग लगाने के लिए डिज़ाइन की गई है। प्रोग्रामेटिकल परिवर्तन इस घटना को निकाल दिया नहीं जाता है।

संबंधित मुद्दे