टेक्स्ट बॉक्स में टैब कुंजी कैप्चर करना

मैं चार रिक्त स्थान पर टैब पर टेक्स्ट बॉक्स में टैब कुंजी का उपयोग करने में सक्षम होना चाहता हूं। जिस तरह से यह है, टैब कुंजी मेरे कर्सर को अगले इनपुट में कूदता है।

क्या कोई जावास्क्रिप्ट है जो यूआई पर बुलबुले से पहले टेक्स्ट बॉक्स में टैब कुंजी को कैप्चर करेगा?

मैं कुछ ब्राउज़रों को समझता हूं (यानी फ़ायरफ़ॉक्स) इसकी अनुमति नहीं दे सकता है। Shift + टैब , या Ctrl + क्यू जैसे कस्टम कुंजी-कॉम्बो के बारे में कैसे?

0
जोड़ा संपादित
विचारों: 1
इस पोस्ट को मॉडरेटर-फ्लैग किया गया "मेटा.स्टैकओवरफ्लो डॉट कॉम पर है," लेकिन यह दो साल से अधिक पुराना है, इसलिए मैं इसे माइग्रेट नहीं कर रहा हूं।
जोड़ा लेखक Robert Harvey, स्रोत
फोकस विंडो की जांच करना न भूलें, और यदि आप संपादक टेक्स्टरेरा में नहीं हैं तो इसे सामान्य रूप से बबल करें।
जोड़ा लेखक FlySwat, स्रोत

6 उत्तर

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

हालांकि, शॉर्टकट कुंजी उपयोगी हो सकती है, खासकर बड़े कोड ब्लॉक और घोंसले के साथ। Shift-TAB एक खराब विकल्प है क्योंकि यह आम तौर पर मुझे किसी फॉर्म पर पिछले फ़ील्ड पर ले जाता है। शायद शॉर्टकट कुंजी के साथ कोड-टैब डालने के लिए डब्लूएमडी संपादक पर एक नया बटन संभव होगा?

0
जोड़ा
@ चार्ल्स अभिगम्यता प्रभावों के बारे में बहुत अच्छी बात है।
जोड़ा लेखक Wally Lawless, स्रोत
सवाल पूरी तरह से आवेदन निर्भर है। मैं एक कोड संपादक नियंत्रण पर काम कर रहा हूँ। मैंने एक टैब कुंजी प्रदान नहीं की और मेरे छात्रों ने सभी शिकायत की। ऐसा इसलिए नहीं था क्योंकि मैं अपने एक छात्र के लिए पहुंच को तोड़ना नहीं चाहता था जो अंधेरा था। मैंने अब टैब समर्थन जोड़ा है, लेकिन इसे बंद करने के लिए उपयोगकर्ता वरीयता विकल्प भी प्रदान किया है।
जोड़ा लेखक Charles, स्रोत

In Chrome on the Mac, alt-tab inserts a tab character into a

यहां एक है: । वी!

0
जोड़ा

पिछला जवाब ठीक है, लेकिन मैं उन लोगों में से एक हूं जो प्रस्तुति के साथ मिश्रित व्यवहार के खिलाफ दृढ़ता से हैं (मेरे एचटीएमएल में जावास्क्रिप्ट डालने) इसलिए मैं अपनी घटनाओं को मेरी जावास्क्रिप्ट फाइलों में हैंडलिंग तर्क देना पसंद करता हूं। इसके अतिरिक्त, सभी ब्राउज़र ईवेंट (या ई) को उसी तरह लागू नहीं करते हैं। आप किसी भी तर्क को चलाने से पहले एक चेक करना चाह सकते हैं:

document.onkeydown = TabExample;

function TabExample(evt) {
  var evt = (evt) ? evt : ((event) ? event : null);
  var tabKey = 9;
  if(evt.keyCode == tabKey) {
    // do work
  }
}
0
जोड़ा

मैं टैब इंडेंटेशन फॉर्म आइटमों के बीच टैबबिंग तोड़ने से काम नहीं करता।

यदि आप मार्कडाउन बॉक्स में कोड डालना चाहते हैं, तो Ctrl + K (या मैक पर के?) का उपयोग करें।

वास्तव में कार्रवाई को रोकने के मामले में, jQuery (जो स्टैक ओवरफ़्लो उपयोग करता है) किसी ईवेंट कॉलबैक से झूठी वापसी करते समय एक ईवेंट को बुलबुले से रोक देगा। इससे कई ब्राउज़रों के साथ काम करने के लिए जीवन आसान हो जाता है।

0
जोड़ा

यहां तक ​​कि यदि आप कीडाउन / कीप इवेंट कैप्चर करते हैं, तो वे एकमात्र ऐसी घटनाएं हैं जो टैब कुंजी की आग लगती हैं, फिर भी आपको डिफ़ॉल्ट कार्रवाई को रोकने के लिए किसी भी तरह की आवश्यकता होती है, जिससे टैब ऑर्डर में अगले आइटम पर जा रहा है।

फ़ायरफ़ॉक्स में आप ईवेंट ईवेंट ऑब्जेक्ट पर आपके ईवेंट हैंडलर पर preventDefault() विधि को कॉल कर सकते हैं। आईई में, आपको इवेंट हैंडल से झूठी वापसी करनी होगी। jQuery लाइब्रेरी आईई और एफएफ में काम करता है जो इसके इवेंट ऑब्जेक्ट पर रोकथाम विधि प्रदान करता है।

<body>
<input type="text" id="myInput">
<script type="text/javascript">
    var myInput = document.getElementById("myInput");
    if(myInput.addEventListener ) {
        myInput.addEventListener('keydown',this.keyHandler,false);
    } else if(myInput.attachEvent ) {
        myInput.attachEvent('onkeydown',this.keyHandler); /* damn IE hack */
    }

    function keyHandler(e) {
        var TABKEY = 9;
        if(e.keyCode == TABKEY) {
            this.value += "    ";
            if(e.preventDefault) {
                e.preventDefault();
            }
            return false;
        }
    }
</script>
</body>
0
जोड़ा
@SteveFenton क्या keycode 8 के साथ रिक्त स्थान को फिर से निकालने का एक आसान तरीका है?
जोड़ा लेखक yckart, स्रोत
मैंने बस लाइन 4 को सही किया, "अगर (el.attachEvent)" से "if (myInput.attachEvent)"
जोड़ा लेखक Fenton, स्रोत
ध्यान दें कि इस कोड में केवल अंत में टैब शामिल है। ज्यादातर अवसरों में यह असुविधाजनक है।
जोड़ा लेखक Alexander Palamarchuk, स्रोत

स्कॉटकून द्वारा दिए गए सर्वोत्तम उत्तर में एक समस्या है

यहाँ है

} else if(el.attachEvent ) {
    myInput.attachEvent('onkeydown',this.keyHandler); /* damn IE hack */
}

होना चाहिए

} else if(myInput.attachEvent ) {
    myInput.attachEvent('onkeydown',this.keyHandler); /* damn IE hack */
}

इसके कारण यह आईई में काम नहीं किया। उम्मीद है कि स्कॉटकून कोड अपडेट करेगा

0
जोड़ा