2010-10-04 14 views
21

मैं पूंजी अक्षरों के लिए टेक्स्टफील्ड में जो कुछ भी लिखता हूं उसे बनाना चाहता हूं। जैसा कि मैं लिखता हूं, फोकस खोने के बाद नहीं।टेक्स्टफील्ड में सबकुछ कैसे करें पूंजी अक्षरों/अपरकेस बनें?

मैं jQuery का उपयोग करके यह कैसे कर सकता हूं?

उत्तर

64

मैं इसके लिए सीएसएस का उपयोग करूंगा।

बस अपनी स्टाइल में text-transform: uppercase जोड़ें, और उसके बाद सर्वर पक्ष पर आप इसे अपरकेस में परिवर्तित कर सकते हैं।

input { 
    text-transform: uppercase; 
} 
+3

यदि आप चाहें तो jQuery के साथ प्रोग्रामेटिक रूप से कक्षा, या इस शैली को जोड़ सकते हैं, लेकिन शायद यही आपको चाहिए। –

+0

दिलचस्प दृष्टिकोण – mcgrailm

+0

+1, अच्छा, मैं सभी प्रकार के jquery/js समाधान भी सोच रहा था, लेकिन यह बेहतर है – Michel

13
$('input[type=text]').keyup(function() { 
    $(this).val($(this).val().toUpperCase()); 
}); 
+0

-1 फोकस खोने के बाद केवल परिवर्तन, नहीं जैसा कि आप टाइप करते हैं। http://jsfiddle.net/XJKgs/ – Greg

+0

मान्य बिंदु, ब्रैंडन के समाधान के साथ इसे क्लाइंट साइड को सही तरीके से बदलने के लिए जोड़ा जाना चाहिए। कुंजीपटल पर अद्यतन करने के लिए कोड को थोड़ा बदल दिया। – Gazler

+6

मैंने अपना डाउनवोट हटा दिया क्योंकि अब यह ओपी पूछता है। लेकिन अगर मैं ऐसी वेबसाइट का उपयोगकर्ता था जिसने यह "कीप" परिवर्तन किया था, ** मैं जिम्मेदार व्यक्ति की तलाश करूँगा **। आपके द्वारा टाइप किए जाने वाले अक्षरों को बदलने से विचलित हो रहा है, और जो आपने टाइप किया है उसे संपादित करने के लिए वापस जाने का प्रयास करना निराशाजनक है क्योंकि कर्सर अंत में आगे बढ़ता रहता है। http://jsfiddle.net/HPapz/1/ – Greg

1

आपको इनके संयोजन का उपयोग करने की आवश्यकता हो सकती है।

टेक्स्ट-ट्रांसफॉर्म शैली का उपयोग करके केवल ऊपरी मामले में प्रकार प्रस्तुत करता है, हालांकि मान कम मामला हो सकता है।

जावास्क्रिप्ट केवल एक बार क्षेत्र में परिवर्तन या ध्यान केंद्रित आप gazler के jQuery या बस इनलाइन जावास्क्रिप्ट

उदा का उपयोग कर सकते

खो दिया है ऊपरी करने के लिए वर्तमान पाठ बदल जाएगा onBlur = 'जावास्क्रिप्ट: this.value = this.value.toUpperCase();'

इसका मतलब है कि टेक्स्ट मान अपरकेस दिखाई देगा और वास्तव में मूल्य परिवर्तन/नियंत्रण फोकस खोने पर ऊपरी चरण में होगा।

HTH सैम

+0

मैं KeyUp – randomizertech

+0

पर उपयोग कर सकता हूं ऑनब्लूर के साथ एक मुद्दा यह है कि यदि उपयोगकर्ता केवल एंटर कुंजी दबाता है, तो एक फॉर्म सबमिट करने के लिए कहें, टेक्स्ट को अपरकेज़ नहीं किया जाएगा। – Joseph

5

उपयोग
oninput='this.value=this.value.toUpperCase();
इस घटना को इसलिए साथ इस लिखे गए पाठ झिलमिलाहट नहीं होगा उपयोगकर्ता इनपुट (दबाने कुंजी) के बाद लेकिन इससे पहले कि अद्यतन करने (प्रदर्शित मान) निकाल दिया जाता है, बस इस तरह के मामलों के लिए है, कनवर्ट करते समय, और मूल्य भी सही है (वास्तविक डेटा को बदलने के बिना प्रदर्शन को बदलने के लिए केवल शैली का उपयोग करने की तरह नहीं)।

0

@ Gazler का जवाब, पर एक उन्नत समाधान है कि बेहतर हैंडल संशोधक कुंजियों (यह मानते हुए आप मिश्रित मामले की एक प्लेसहोल्डर है और text-transform: uppercase; निर्धारित नहीं कर सकते हैं) का निर्माण करने के लिए:

$('.search-input input[type=text]').keyup(function() { 
    var v = $(this).val(); 
    var u = v.toUpperCase(); 
    if(v != u) $(this).val(u); 
})