2011-05-11 8 views
8

मेरे पास सरल चेकबॉक्स है:परिवर्तन ईवेंट को फायर किए बिना आप चेकबॉक्स कैसे चेक करते हैं?

r = new Ext.form.Checkbox({ 
    listeners: { 
     check: function(checkbox, checked) { 
     } 
    } 
} 

r.setValue(true); 

बिना किसी जांच के चेकबॉक्स को कैसे चेक करें (मैं केवल माउस क्लिक से जांचना चाहता हूं)? (setValue काम नहीं करता है)।

उत्तर

27

आपको मूल्य निर्धारित करने से पहले ईवेंट को निलंबित करना चाहिए और उसके बाद ईवेंट फिर से शुरू करना चाहिए। उदाहरण के लिए:

myCheckBox.suspendEvents(false); // Stop all events. 
           //Be careful with it. Dont forget resume events! 
myCheckBox.setValue(!myCheckBox.getValue()); // invert value 
myCheckBox.resumeEvents(); // resume events 
1

आप क्यों नहीं बस r.checked सेट न सही =, वह काम नहीं करता?

1

क्यों आप बस r.checked = true सेट नहीं करते हैं, क्या यह काम नहीं करता है?

चेक किए गए गुणों को सेट करना केवल प्रारंभिक नियंत्रण मान असाइन करने के लिए गैर-रेंडर नियंत्रण के लिए प्रभावित होगा। प्रतिपादन के बाद आप मूल्य बदलने के लिए इसका उपयोग नहीं कर सकते हैं।

निलंबन/घटनाओं को फिर से शुरू करना अधिसूचनाएं भेजे बिना नियंत्रण मूल्य बदलने के लिए अच्छा अभ्यास है।

इसके अलावा, आप जाँच की राज्य immedially डाल सकते हैं तत्व डोम के लिए:

item.el.dom.checked = true;

0

मैं पहले से ही googling से पहले स्वीकार किए जाते हैं जवाब कोशिश कर रहा था, लेकिन यह 4.1.3 में काम नहीं किया। निम्नलिखित ने किया:

myCheckBox.setRawValue(true); 

उम्मीद है कि यह भविष्य के googlers में मदद करता है।

+1

सावधानी बरतें: "setRawValue" का उपयोग करके, पहला अनचेक ईवेंट आग नहीं लगेगा। स्रोत: http://www.sencha.com/forum/showthread.php?263404- चेकबॉक्स-does-not-fire-quot-change-quot-event-on-the-first-change-after-setRawValue(true) । और एस = 2fb682a6d30f35675c73e5c6230c476d – pvieira

0

suspendEvents(false) कॉलिंग मूल्य स्थापित करने और resumeEvents() बाद में setRawValue की तुलना में एक अधिक सामान्य दृष्टिकोण है, क्योंकि आप कन्वर्टर्स उपयोग कर रहे हैं (जैसे कि, 1true है और 0false है) वे काम कर ही रहेगा से पहले।

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

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