jQuery: पहले दिखाई इनपुट / चयन / textarea बटन को छोड़कर कैसे खोजने के लिए?


87

मैंने कोशिश की

$(":input:not(input[type=button],input[type=submit],button):visible:first")

लेकिन यह कुछ भी नहीं है।

मेरी क्या गलती है?

UPD: मैं इसे $ (दस्तावेज़) .load () पर निष्पादित करता हूं

<script type="text/javascript">
$(window).load(function () {
  var aspForm  = $("form#aspnetForm");
  var firstInput = $(":input:not(input[type=button],input[type=submit],button):visible:first", aspForm);
  firstInput.focus();
});
</script>

और डिबग में मैं देख सकता हूं कि FirstInput खाली है।

UPD2: मैं शेयरपॉइंट के तहत चलने वाले ASP.NET पेज में हूं।

मैंने अब तक पाया है कि कुछ तत्वों के लिए यह उन्हें (निश्चित लोगों के लिए) और कुछ के लिए नहीं मिलता है। :(


": इनपुट" के बजाय "इनपुट" आज़माएं?
एलेक

ठीक काम करना चाहिए। आपकी समस्या कहीं और है। आप इस क्रियान्वित नहीं कर रहे हैं इससे पहले कि$(document) है ready()?
बालूसा

क्या आपके पास खोज करने के लिए एक विशिष्ट HTML है?
शिकी

शायद पहला इनपुट किसका है type="hidden"? राइटक्लिक पेज और व्यू सोर्स। उत्पन्न HTML भी मायने रखती है। इसके बिना और एक उचित SSCCE , यह अंधेरे में शूटिंग कर रहा है।
BalusC

जवाबों:


166

केवल उन लोगों को लक्षित न करें जिन्हें आप चाहते हैं ( डेमो )?

$('form').find('input[type=text],textarea,select').filter(':visible:first');

संपादित करें

या jQuery का उपयोग करें : फॉर्म चयनकर्ताओं को फ़िल्टर करने के लिए इनपुट चयनकर्ता।

$('form').find('*').filter(':input:visible:first');

5
चेकबॉक्स? रेडियो? कुंजिका? नए HTML5 इनपुट प्रकारों का अधिक उल्लेख नहीं करना।
बालूसी

9
@BalusC $ ('फ़ॉर्म')। ढूँढें (': इनपुट')। फ़िल्टर (': दृश्यमान: पहला')
अबे पेट्रिलो

1
हालांकि यह कुछ हद तक काम करता है, यह टैबइंडेक्स विशेषता को अनदेखा करता है।
इलियरी

2
छोटा नाइटपिक लेकिन उपयोगी जोड़: ': दृश्यमान: प्रथम', ': दृश्यमान: सक्षम: पहला' के बजाय एक बेहतर फिल्टर होगा क्योंकि शीर्ष तत्व को कुछ मामलों में निष्क्रिय किया जा सकता है और ध्यान वहां नहीं जा सकता।
प्रहलाद यरी

1
@PrahladYeri ने शायद इसे आसानी से बाहर कर दिया':input:visible:enabled:not([readonly]):first'
जस्टिनस्टोले

13

JQuery कोड ठीक है। आपको विंडो हैंड लोड ईवेंट में तैयार हैंडलर पर अमल करना चाहिए।

<script type="text/javascript">
$(function(){
  var aspForm  = $("form#aspnetForm");
  var firstInput = $(":input:not(input[type=button],input[type=submit],button):visible:first", aspForm);
  firstInput.focus();
});
</script>

अपडेट करें

मैंने करीम79 (उदाहरण के लिए धन्यवाद) के उदाहरण के साथ प्रयास किया और यह ठीक काम करता है: http://jsfiddle.net/2sff5/


3
साभार @ बालसुख मैं अब खुद को शूट करने जा रहा हूं। मुझे खुद से नफरत है। मैं काम करने वाले कोड के साथ खिलवाड़ नहीं कर सकता था। मैं अपने कुत्तों को खाना खिला सकता था, अपनी रसोई साफ कर सकता था। ऐसी कई चीजें हैं जिन्हें मैं हासिल कर सकता था। अब मुझे दर्द है। अलविदा, हमेशा के लिए .... और हां, मुझे सुनना चाहिए था।
करीम May३

@ करीम: rofl। आपका स्वागत है :) Btw: मैं पहले से ही अपने बच्चों को नहलाता हूं, उन्हें बिस्तर पर लाता हूं, कुत्तों और बिल्लियों को खिलाता हूं और खुद कोका कोला
लेता हूं

7

यह ऊपर का मेरा सारांश है और मेरे लिए पूरी तरह से काम करता है। जानकारी के लिए धन्यवाद!

<script language='javascript' type='text/javascript'>
    $(document).ready(function () {
        var firstInput = $('form').find('input[type=text],input[type=password],input[type=radio],input[type=checkbox],textarea,select').filter(':visible:first');
        if (firstInput != null) {
            firstInput.focus();
        }
    });
</script>

3

यह @ मॉटी के उत्तर पर एक सुधार है क्योंकि jQuery के रूप में 1.5.2 उन तत्वों :textका चयन करता inputहै जिनके पास कोई निर्दिष्ट typeविशेषता नहीं है (जिसमें मामला type="text"निहित है):

$('form').find(':text,textarea,select').filter(':visible:first')

1

यहाँ मेरा समाधान है। कोड का पालन करना आसान होना चाहिए, लेकिन यहां यह विचार है:

  • सभी जानकारी प्राप्त करें, चयन करें, और textareas करें
  • सभी बटन और छिपे हुए फ़ील्ड फ़िल्टर करें
  • केवल सक्षम, दृश्यमान फ़ील्ड पर फ़िल्टर करें
  • पहले वाले का चयन करें
  • चयनित फ़ील्ड पर ध्यान केंद्रित करें

कोड:

function focusFirst(parent) {
    $(parent).find('input, textarea, select')
        .not('input[type=hidden],input[type=button],input[type=submit],input[type=reset],input[type=image],button')
        .filter(':enabled:visible:first')
        .focus();
}

फिर बस अपने मूल तत्व या चयनकर्ता के साथ फ़ोकस फ़र्स्ट को कॉल करें।

चयनकर्ता:

focusFirst('form#aspnetForm');

तत्व:

var el = $('form#aspnetForm');
focusFirst(el);

0

आप नीचे कोड की कोशिश कर सकते हैं ...

$(document).ready(function(){
    $('form').find('input[type=text],textarea,select').filter(':visible:first').focus();
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<form>
<input type="text" />
<input type="text" />
<input type="text" />
<input type="text" />
<input type="text" />
    
<input type="submit" />
</form>

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.