क्या यह मैन्युअल रूप से किए बिना, कुंजीपटल पर दर्ज किया गया चरित्र बदलना संभव है?क्या मैं सशर्त रूप से कुंजीपटल पर इनपुट में दर्ज चरित्र को बदल सकता हूं?
उदाहरण के लिए, अगर मैं बड़े अक्षरों कुछ हालत के आधार पर बाध्य करना चाहते हैं, तो निम्न कार्य के लिए अच्छा होगा:
function onKeypressHandler(e)
{
if (condition)
{
e.which -= 32;
}
}
लेकिन निश्चित है कि काम नहीं करता है की।
नोट: यह नहीं बोर्ड uppercasing भर एक है, लेकिन केवल विशिष्ट वर्ण है। हालत ही महत्वपूर्ण नहीं है, लेकिन uppercasing केवल वर्तमान चरित्र नहीं पूरे इनपुट करने के लिए लागू करना चाहिए -
शायद मैं if (e.which >= 97 && e.which <= 102)
या if (Wind.Direction == 'South')
या जो कुछ भी कहना चाहता हूँ।
मैं इसे बदलते चरित्र को मैन्युअल रूप से जोड़कर कर सकता हूं, लेकिन यह ऐसा करने का एक बदसूरत और गन्दा तरीका है, और शायद यह धीमा हो सकता है।
function onKeypressHandler(e)
{
if (condition)
{
$j(this).val($j(this).val() + String.fromCharCode(e.which - 32));
return false;
}
}
इस विधि के साथ एक विशिष्ट दोष - सभी इनपुट पाठ का चयन और एक कुंजी में प्रवेश, अगर यह इस में चला जाता है तो यह मौजूदा सामग्री को दूर नहीं करता है, लेकिन सामान्य रूप से सामग्री उपयोगकर्ता हटाया चाहते थे करने के लिए संलग्न कर देता है, तो। (इसे हल करने के लिए किसी भी चयनित पाठ का पता लगाने की जांच करने की आवश्यकता होगी, जो इसे एक भी उलझन में डाल देता है।)
क्या कोई बेहतर समाधान प्रदान कर सकता है?
आप चिपकाने से कैसे निपटता हैं के लिए https://developer.mozilla.org/en/DOM/event.initKeyEvent इस्तेमाल किया, पूर्ववत करें/फिर, खींचकर और छोड़कर या कई पात्रों के अन्य उदाहरण जा रहा है एक ही समय में प्रवेश किया, या यह महत्वपूर्ण नहीं है? –
एंडी, यह यहां बहुत महत्वपूर्ण नहीं है, लेकिन अभी भी संभालने में उपयोगी होगा - मुझे लगता है कि इसे बदले में ईवेंट के भीतर मैन्युअल रूप से स्ट्रिंग को चलाना होगा? –
या * oninput * और * onpropertychange * घटनाएं। मैंने कुछ समय पहले अपने ब्लॉग पर इन्हें रेखांकित किया - http://whattheheadsaid.com/2010/09/effectively-detecting-user-input-in-javascript और मेरे पास कार्यों में इसके लिए लगभग पूरी jQuery प्लगइन है। –