2011-05-06 21 views
5

पर ट्रिगर्स करता है आम तौर पर, टेक्स्टफिल्ड अपना फोकस (धुंध पर) खोने के बाद चेंज इवेंट ट्रिगर होगा।टेक्स्टफिल्ड 'चेंज' इवेंट केवल धुंध

लेकिन मुझे क्षेत्र में फोकस खोने की आवश्यकता के बिना, क्षेत्र के मूल्य में परिवर्तन के तुरंत बाद इसे ट्रिगर करने की आवश्यकता है।

KeyListener इसे काट नहीं देता है, क्योंकि मान आ सकता है, उदाहरण के लिए, बारकोड स्कैनर से।

क्या यह हासिल करने का कोई तरीका है?

अग्रिम धन्यवाद!

उत्तर

1

मैंने ext-gwt के साथ काम नहीं किया है, लेकिन आपको यह करना है: आपको KeyListener का उपयोग करना होगा और ONPASTE के लिए श्रोता जोड़ें। 'चेंज' ईवेंट ब्राउज़र द्वारा प्रदान किया जाता है, और यह केवल तभी ट्रिगर होता है जब फोकस दूर हो जाता है (धुंध के दौरान), और यदि पाठ बदल गया है।

+0

धन्यवाद उपयोग कर सकते हैं (यह एक सादा GWT पाठ बॉक्स पर काम करता है, लेकिन यह एक Ext-GWT TextField के लिए अनुकूल करने के लिए सरल होना चाहिए)। दुर्भाग्यवश, आपके समाधान को लागू करने का प्रयास करने के बाद, यह एक्स्ट-जीडब्ल्यूटी में इवेंट प्रकार 'ऑनपेस्ट' लगता है - जो डोम ऑनपेस्ट इवेंट का प्रतिनिधित्व करता है - या तो काम नहीं कर रहा है। :( –

+0

जांचें कि क्या [यह] (http://www.sencha.com/forum/showthread.php?88080-Listener-for-Event.ONPASTE) मदद करता है। – Raze

+0

पेस्ट ईवेंट के लिए समर्थन काफी अलग है ब्राउज़र में ब्राउजर, विस्तार से: [http://www.quirksmode.org/dom/events/cutcopypaste.html ](http://www.quirksmode.org/dom/events/cutcopypaste.html) (ऐसा लगता है ओपेरा के साथ बिल्कुल काम नहीं करता है)। अपने ब्राउज़र के साथ [टेस्ट पेज] (http://www.quirksmode.org/dom/events/tests/cutcopypaste.html) पर आज़माएं। एक महत्वपूर्ण अंतर हो सकता है कौन सा तत्व प्रत्येक ब्राउज़र घटना को आग लगाता है - और जिस पर एक एक्सटी-जीडब्ल्यूटी श्रोता को पंजीकृत करता है। –

0

मुझे नहीं लगता कि एक ऐसी घटना है जो सभी स्थितियों के लिए क्रॉस-ब्राउज़र काम करती है। तो "गरीब आदमी का समाधान" हर दूसरे या तो पाठ क्षेत्र को मतदान करना है। वास्तव में, इस तरह के एक परीक्षण को बहुत जल्दी किया जा सकता है, और यदि आप इसे कई बार टेक्स्ट फ़ील्ड पर उपयोग नहीं करते हैं, तो आपको ठीक होना चाहिए।

आप अपने छोटे उदाहरण कोड यदि चाहें तो अपने जवाब के लिए

@Override 
public void onModuleLoad() { 

    final TextBox textBox = new TextBox(); 
    final int delayMilliseconds = 1000; 

    Scheduler.get().scheduleFixedDelay(new RepeatingCommand() { 

     private String previousValue = ""; 

     @Override 
     public boolean execute() { 

      final String newValue = textBox.getValue(); 
      if (!previousValue.equals(newValue)) { 
       try { 
        valueChanged(); 
       } finally { 
        previousValue = newValue; 
       } 
      } 
      return true; 
     } 

     private void valueChanged() { 
      // React on the change 
      Window.alert("Value changed"); 
     } 

    }, delayMilliseconds); 

    RootPanel.get().add(textBox); 
} 
संबंधित मुद्दे