jQuery

2012-02-09 3 views
21

के साथ दबाने वाली टैब कुंजी को अनुकरण करें मेरे पास .net-page पर कुछ टेक्स्टबॉक्स हैं और jQuery के साथ निम्नलिखित प्राप्त करना चाहते हैं: यदि उपयोगकर्ता वापस दबाता है, तो प्रोग्राम को "जैसे" उन्होंने टैब कुंजी का उपयोग करना चाहिए, इस प्रकार , अगले तत्व का चयन करें। मैं निम्नलिखित कोड (और कुछ अधिक) की कोशिश की:jQuery

<script type="text/javascript"> 

jQuery(document).ready(function() { 

    $('.tb').keypress(function (e) { 
     if (e.keyCode == 13) 
     { 
      $(this).trigger("keydown", [9]); 
      alert("return pressed"); 
     } 
    }); 
}); 

<asp:TextBox ID="TextBox1" runat="server" CssClass="tb"></asp:TextBox> 
<asp:TextBox ID="TextBox2" runat="server" CssClass="tb"></asp:TextBox> 

लेकिन यह सिर्फ काम नहीं करता है! कुछ गलती करना, गलती करना?

ये कुछ लिंक मैं

इस्तेमाल किया

here

and here

+1

अच्छा, नहीं; क्योंकि आप समारोह में घटना को पार नहीं कर रहे हैं। आपको इसका उपयोग करने की आवश्यकता है: '$ ('। Tb')। Keypress (function (e) {' तब फ़ंक्शन के पास ईवेंट तक पहुंच है, और फिर 'event.keyCode' है, हालांकि मुझे लगता है कि' e.which 'सामान्यीकृत है jQuery संस्करण (जो हो सकता है, या नहीं, आवश्यक हो सकता है) –

+0

क्या आप "काम नहीं करते" को स्पष्ट कर सकते हैं? क्या होता है? कोई जेएस-त्रुटियां प्राप्त करें? –

+0

@ डेविड थॉमस: धन्यवाद, इसे ठीक करें। – AGuyCalledGerald

उत्तर

12

इस प्रयास करें:

http://jsbin.com/ofexat

$('.tg').bind('keypress', function(event) { 
    if(event.which === 13) { 
    $(this).next().focus(); 
    } 
}); 

या पाश संस्करण: http://jsbin.com/ofexat/2

+4

धन्यवाद, लेकिन यह केवल तभी काम करता है जब निम्न भाई तत्व पाया जाता है, या क्या मैं गलत हूं? लेकिन यह किसी भी मामले में काम करना चाहिए। – AGuyCalledGerald

+0

क्या आप तत्वों को लूप करना चाहते हैं? – czerasz

+0

जब तक मुझे नहीं करना है। – AGuyCalledGerald

3

प्रयास करें इस

$(this).trigger({ 
    type: 'keypress', 
    which: 9 
}); 
+4

धन्यवाद, लेकिन यह अभी भी प्रतिक्रिया नहीं करता है। – AGuyCalledGerald

+0

त्रुटियों के लिए जेएस कंसोल की जांच करें, एक स्वच्छ HTML फ़ाइल में कोड को अलग से चलाने का प्रयास करें और देखें कि क्या आप आवश्यक विशिष्ट स्थिति का उत्पादन कर सकते हैं। इसे अपनी मास्टर फ़ाइल में ले जाने का प्रयास करें। –

+1

क्या आप इसके लिए एक अच्छा पहेली प्रदान कर सकते हैं? क्योंकि मैंने कोशिश की, और यह काम नहीं किया। [यहां] देखें (http://jsfiddle.net/saeedneamati/gtbUp/)। –

8

मैं एक simple jQuery plugin जो इस समस्या को हल करता है बनाया। यह अगले 'टैबबेल' तत्व को खोजने के लिए jQuery UI के 'टैबबबल' चयनकर्ता का उपयोग करता है और इसे चुनता है।

उदाहरण उपयोग:

// Simulate tab key when enter is pressed   
$('.tb').bind('keypress', function(event){ 
    if(event.which === 13){ 
     if(event.shiftKey){ 
      $.tabPrev(); 
     } 
     else{ 
      $.tabNext(); 
     } 
     return false; 
    } 
}); 
+0

धन्यवाद, मैंने छेद प्लगइन का उपयोग नहीं किया लेकिन चयनकर्ता के साथ: टैबबेल एक अच्छा मस्तिष्क शॉट था: पी – prdatur

7

एकाधिक जवाब से मैं, जहां इनपुट पर टैब के रूप में कार्य करता है दर्ज करें और और अगले इनपुट पर ध्यान केंद्रित करने लगते हैं, का चयन करें या पाठ क्षेत्र है, जबकि मेरे लिए एकदम सही समाधान संयुक्त है पाठ क्षेत्र के अंदर प्रवेश की अनुमति देता है ।

$("input,select").bind("keydown", function (e) { 
    var keyCode = e.keyCode || e.which; 
    if(keyCode === 13) { 
     e.preventDefault(); 
     $('input, select, textarea') 
     [$('input,select,textarea').index(this)+1].focus(); 
    } 
}); 
+0

यह मेरी परियोजना के लिए लगभग बिल्कुल सही है, लेकिन मुझे इसकी आवश्यकता है कि प्रत्येक रेडियो बटन पर टैब न करें । एक ही नाम के साथ इनपुट छोड़ने के लिए एक लूप चाल था। 'var nextInput = $ ('इनपुट, चयन, textarea') [$ ('इनपुट, चयन, textarea')। अनुक्रमणिका (यह) +1]; जबकि ($ (यह) .attr ('name') === $ (अगला इनपुट) .attr ('name')) { अगला इनपुट = $ ('इनपुट, चयन, textarea') [$ ('इनपुट, चयन करें) , पाठ क्षेत्र ') सूचकांक (nextInput) +1]। } ' यह अभी भी छिपे हुए इनपुट के अंदर फंस गया है। आम तौर पर वे फॉर्म के शीर्ष पर हो सकते हैं, लेकिन मेरे पास एक सशर्त रूप से छिपी हुई इनपुट है जिसे सही स्थान पर फिर से दिखाना है। – malcanso

+1

'अगर (keyCode === 13) {' बेहतर है – Artru