jquery इनपुट फोकस पर सभी का चयन करें


326

जब कोई उपयोगकर्ता फ़ील्ड पर ध्यान केंद्रित करता है, तो मैं इस कोड का उपयोग उस क्षेत्र के सभी पाठों को चुनने और चुनने के लिए कर रहा हूं। क्या होता है, यह एक सेकंड के लिए सभी का चयन करता है, फिर इसके अचयनित और टाइपिंग कर्सर को छोड़ दिया जाता है जहां मैंने क्लिक किया है ...

$("input[type=text]").focus(function() {
   $(this).select();
});

मैं चाहता हूं कि यह सब चयनित रहे।


क्या ब्राउज़र, यह एफएफ में मेरे लिए ठीक काम कर रहा है?
R0MANARMY

8
Chrome = इसके लिए असफल
रहें

1
मैं क्रोम का उपयोग कर रहा था, लेकिन .click () समस्या हल करता है :)
टिम

4
नोट: यहाँ स्वीकृत उत्तर केवल आधी समस्या को हल करता है। यह चुनिंदा काम करता है, लेकिन बाद के क्लिकों के साथ इसे अन-सेलेक्ट करना मुश्किल बना देता है। एक बेहतर समाधान यहां पाया जा सकता है: stackoverflow.com/questions/3380458/…
SDC

जवाबों:


480

के clickबजाय का उपयोग करने का प्रयास करें focus। यह माउस और प्रमुख घटनाओं (कम से कम क्रोम / मैक पर) दोनों के लिए काम करता है:

jQuery <संस्करण 1.7:

$("input[type='text']").click(function () {
   $(this).select();
});

jQuery का संस्करण 1.7+:

$("input[type='text']").on("click", function () {
   $(this).select();
});

यहाँ एक डेमो है


62
समस्या यह है कि आप माउस द्वारा पाठ का कोई और अधिक हिस्सा नहीं चुन सकते हैं, एक बार क्लिक करने पर पूर्ण पाठ चुना जाता है।
हेलिन वांग

6
मेरे लिए व्यवहार्य समाधान नहीं। इससे वांग द्वारा बताई गई समस्या पैदा होती है।
मार्केज

1
निआनपेंग द्वारा नीचे एक समाधान है जो माउस पाठ चयन के साथ भी काम करता है।
फिलाबर्ट पेरुसे

4
@AwQiruiGuo $ .fn.on ('क्लिक', ..) कम स्मृति का उपयोग कर सकते हैं और गतिशील रूप से जोड़े गए तत्वों के लिए काम कर सकते हैं।
रिकी बॉयस

7
यह एक क्षेत्र को ध्यान में रखते हुए काम नहीं करता है।
कॉलिन ब्रीम

65

मुझे लगता है कि यह क्या होता है:

focus()
   UI tasks related to pre-focus
   callbacks
       select()
   UI tasks related to focus (which unselect again)

वर्कअराउंड हो सकता है कॉल का चयन करें () अतुल्यकालिक, ताकि यह पूरी तरह से फोकस के बाद चलता हो ():

$("input[type=text]").focus(function() { 
    var save_this = $(this);
    window.setTimeout (function(){ 
       save_this.select(); 
    },100);
});

3
$ ("इनपुट [प्रकार = पाठ]")। फ़ोकस (फ़ंक्शन () {var save_this = $ (यह); window.setTimeout (फ़ंक्शन () {save_this.select ();}; 100);});
एटिएन

@etienne: ओह, अच्छा बिंदु: इस तरह के स्कोप्स में हैंडलिंग thisथोड़ा अप्रत्याशित है। मैं कोड अपडेट कर दूंगा।
पिस्कोवर ने

3
0 का टाइमआउट मान भी ठीक लगता है, और "फ़ोकसिन ()" फ़ंक्शन भी इस पद्धति के साथ काम कर रहा है।
Tanguy

4
हाँ, आपको एक अवधि निर्धारित करने की आवश्यकता नहीं है। वर्तमान कॉल स्टैक के अंत में टाइमआउट चलने के बाद से 0 ठीक हो जाएगा। इसका मतलब यह है कि सभी आग पर ध्यान केंद्रित करें और घटनाओं पर क्लिक करें, और फिर आपका फ़ंक्शन चलता है
जोशुआ बम्ब्रिक

1
टाइमआउट 0 में समस्या है कि 'क्लिक' ईवेंट बाद के फ्रेम में आग लगा सकता है, फिर से बॉक्स को अचयनित कर सकता है। कोई उल्लेखनीय देरी है, लेकिन 0. तुलना में अधिक विश्वसनीय - मुझे लगता है कि समय समाप्त 10 बहुत अच्छी तरह से काम करने लगता है लगता है
philh

57

मुझे लगता है कि यह बेहतर उपाय है। केवल ऑनक्लिक ईवेंट में चयन करने के विपरीत, यह माउस के साथ टेक्स्ट को चुनने / संपादित करने से नहीं रोकता है। यह IE8 सहित प्रमुख रेंडरिंग इंजन के साथ काम करता है।

$('input').on('focus', function (e) {
    $(this)
        .one('mouseup', function () {
            $(this).select();
            return false;
        })
        .select();
});

http://jsfiddle.net/25Mab/9/


4
यह केवल मौजूदा फ़ील्ड्स के लिए काम करता है, यहाँ इसे नए इनपुट फ़ील्ड्स के लिए
बाइंड

कभी-कभी ध्यान एक क्लिक के बिना दिया जा सकता है, और यह इसे अच्छी तरह से संभालता है। इस वजह से, यह मेरे लिए सबसे साफ जवाब है - भले ही हर बार इनपुट पर ध्यान दिया जाता है और एक क्लिक से नहीं बल्कि कुछ झूलने वाले घटना सुनने वाले हो सकते हैं ...
सेटटाइमआउट

यह माउस के साथ पाठ के दूसरे भाग का चयन करने के लिए संख्यात्मक इनपुट के भीतर एक दूसरे क्लिक की अनुमति नहीं देता है। select()हालांकि दूसरे को हटाना काम लगता है।
dperish

एक अतिरिक्त के साथ और भी बेहतर$('input[autofocus]').select();
डैनियल ब्लेइस्टीनर

38

यहाँ कुछ सभ्य उत्तर हैं और @ user2072367 मेरा पसंदीदा है, लेकिन इसका एक अप्रत्याशित परिणाम है जब आप क्लिक के माध्यम से टैब के माध्यम से ध्यान केंद्रित करते हैं। (अप्रत्याशित परिणाम: टैब के माध्यम से सामान्य रूप से पाठ का चयन करने के लिए, आपको एक अतिरिक्त समय पर क्लिक करना होगा)

यह फिडेल उस छोटे बग को ठीक करता है और अतिरिक्त रूप से $ (यह) अनावश्यक डोम चयन से बचने के लिए एक चर में संग्रहीत करता है। इसकी जांच - पड़ताल करें! (:

IE> 8 में परीक्षण किया गया

$('input').on('focus', function() {
    var $this = $(this)
        .one('mouseup.mouseupSelect', function() {
            $this.select();
            return false;
        })
        .one('mousedown', function() {
            // compensate for untriggered 'mouseup' caused by focus via tab
            $this.off('mouseup.mouseupSelect');
        })
        .select();
});

2
+1 आपके और @ user2072367 के समाधान इस पूरे धागे में सबसे साफ हैं और मैं चाहता हूं कि शीर्ष तेज करने के लिए एक तरीका है।
काइलमिट

1
यहां तक ​​कि अगर उपयोगकर्ता सभी पाठ, ब्रावो का चयन करने की कोशिश करता है तो भी काम करता है।
विटानी

मेरे लिए यह विंडोज 8.1 पर ie11 पर काम नहीं करता है। यह विंडोज 7 पर और खिड़कियों पर 10 IE11 में काम करता है
लार्स थॉमस Bredland

1
@LarsThomasBredland मैं सिर्फ 8.1 + यानी 11 जीतने की कोशिश की और यह उम्मीद के मुताबिक काम करता है। आपके लिए इसके बारे में क्या "काम नहीं करता है"?
एनिमेटेडजिफ़

यह सिर्फ कुछ भी चयन नहीं करता है। (मैं एक और win8 पर परीक्षण किया है और यह वहाँ काम करता है - एक ही ओएस स्तर और संस्करण)
लार्स थॉमस ब्रेडलैंड

21

सावधान समीक्षा के बाद, मैं इसे इस धागे के भीतर एक दूर क्लीनर समाधान के रूप में प्रस्तावित करता हूं:

$("input").focus(function(){
    $(this).on("click.a keyup.a", function(e){      
        $(this).off("click.a keyup.a").select();
    });
});

JsFiddle में डेमो

समस्या:

यहाँ थोड़ा सा स्पष्टीकरण दिया गया है:

सबसे पहले, आइए घटनाओं के क्रम पर एक नज़र डालें जब आप एक क्षेत्र में माउस या टैब करते हैं।
हम इस तरह से सभी प्रासंगिक घटनाओं को लॉग इन कर सकते हैं:

$("input").on("mousedown focus mouseup click blur keydown keypress keyup change",
              function(e) { console.log(e.type); });

घटनाओं पर ध्यान केंद्रित करें

नोट : मैंने इस समाधान को उपयोग करने के clickबजाय बदल दिया हैmouseup क्योंकि यह बाद में घटना पाइपलाइन में होता है और ऐसा लगता है कि @ Jocie की टिप्पणी के अनुसार फ़ायरफ़ॉक्स में कुछ समस्याएँ पैदा कर रहा है

कुछ ब्राउज़र mouseupया clickघटनाओं के दौरान कर्सर को रखने का प्रयास करते हैं। यह समझ में आता है क्योंकि आप एक स्थिति में कैरेट शुरू करना चाहते हैं और कुछ पाठ को उजागर करने के लिए ऊपर खींच सकते हैं। जब तक आप वास्तव में माउस को नहीं उठाते तब तक यह कार्यवाहक स्थिति के बारे में कोई पदनाम नहीं कर सकता है। तो कार्य जो संभालता हैfocus करना बहुत जल्दी प्रतिक्रिया देने के लिए किया जाता है, जिससे ब्राउज़र आपकी स्थिति को ओवरराइड कर सकता है।

लेकिन बकवास यह है कि हम वास्तव में फोकस घटना को संभालना चाहते हैं। यह हमें पहली बार पता चला है कि किसी ने मैदान में प्रवेश किया है। उस बिंदु के बाद, हम उपयोगकर्ता चयन व्यवहार को ओवरराइड करना जारी नहीं रखना चाहते हैं।

समाधान:

इसके बजाय, focusईवेंट हैंडलर के भीतर , हम श्रोताओं को आग लगने के बारे clickमें (क्लिक इन) और keyup(टैब इन) घटनाओं के लिए जल्दी से संलग्न कर सकते हैं।

नोट : एक टैब ईवेंट की कीप वास्तव में नए इनपुट फ़ील्ड में आग लगाएगी , न कि पिछले एक पर

हम केवल एक बार आग लगाना चाहते हैं। हम उपयोग कर सकते हैं .one("click keyup), लेकिन यह ईवेंट हैंडलर को प्रत्येक ईवेंट प्रकार के लिए एक बार कॉल करेगा । इसके बजाय, जैसे ही माउसअप या कीप दबाया जाता है हम अपने फ़ंक्शन को कॉल करेंगे। पहली चीज़ जो हम करेंगे, वह है दोनों के लिए हैंडलर निकालना। इस तरह यह कोई फर्क नहीं पड़ता कि हम टैब करते हैं या मूस करते हैं। फ़ंक्शन को एक बार बिल्कुल निष्पादित करना चाहिए।

नोट : अधिकांश ब्राउज़र टैब ईवेंट के दौरान स्वाभाविक रूप से सभी टेक्स्ट का चयन करते हैं, लेकिन जैसा कि एनिमेटेडगिफ़ ने बताया है , हम अभी भी keyupईवेंट को संभालना चाहते हैं , अन्यथा mouseupईवेंट अभी भी हमारे द्वारा टैब किए जाने के आस-पास रहेगा। हम दोनों को सुनते हैं ताकि हम इसे चालू कर सकें। चयन को संसाधित करते ही श्रोताओं से दूर हो जाना।

अब, हम कॉल कर सकते हैं select() ब्राउज़र के चयन के बाद इसलिए हम डिफ़ॉल्ट व्यवहार को ओवरराइड करना सुनिश्चित करते हैं।

अंत में, अतिरिक्त सुरक्षा के लिए, हम इवेंट नेमस्पेस को फंक्शन्स में जोड़ सकते हैं mouseupऔर keyupइसलिए यह .off()विधि किसी अन्य श्रोता को नहीं हटा सकती है जो कि प्ले में हो सकता है।


IE 10+, FF 28+, और Chrome 35+ में परीक्षण किया गया


वैकल्पिक रूप से, यदि आप jQuery को एक फ़ंक्शन केonce साथ विस्तारित करना चाहते हैं, तो यह कहा जाता है कि किसी भी संख्या में घटनाओं के लिए एक बार आग लग जाएगी :

$.fn.once = function (events, callback) {
    return this.each(function () {
        var myCallback = function (e) {
            callback.call(this, e);
            $(this).off(events, myCallback);
        };
        $(this).on(events, myCallback);
    });
};

फिर आप इस तरह से कोड को सरल बना सकते हैं:

$("input").focus(function(){
    $(this).once("click keyup", function(e){      
        $(this).select();
    });
});

फिडल में डेमो


फ़ायरफ़ॉक्स 31 में विंडोज पर आपका कोड केवल दो टेक्स्ट बॉक्स के बीच क्लिक करने पर हर दूसरे क्लिक पर टेक्स्ट को
सिलेक्ट करता है

1
@ जोकी, मुझे यकीन नहीं है कि यह वैकल्पिक क्यों है, लेकिन ऐसा लगता है कि एफएफ उस clickघटना में पाठ चयन को संभालता है जो आगे की तुलना में पाइपलाइन से नीचे है mouseup। चूँकि हम ब्राउज़र को ओवरराइड करने का सबसे अधिक मौका देने के लिए चयन के अंत को यथासंभव देर से संभालना चाहते हैं, इसलिए माउसअप के बजाय क्लिक का उपयोग करना चाहिए। एफएफ, क्रोम और आईई में परीक्षण किया गया।
काइलमिट

1
धन्यवाद! अंत में एक समाधान जो वास्तव में और सभी ब्राउज़रों में काम करता है!
विंसेंट

1
हाँ! यह मेरे लिए भी काम किया! धन्यवाद। इसका आधिकारिक उत्तर होना चाहिए था
Fandango68

1
@RiZKiT, oneइसे नहीं काटेगा क्योंकि "हैंडलर को प्रति घटना प्रकार के अनुसार एक बार निष्पादित किया जाता है । यह स्वचालित रूप से उस घटना को बंद कर देगा जिसने इसे निकाल दिया था, लेकिन दूसरा अभी भी आस-पास रहेगा, और offवैसे भी दोनों का ध्यान रखेगा । मेरी तरह देखें। प्रश्न: किसी भी संख्या में घटनाओं के लिए ठीक एक बार आग लगने वाला कार्य
काइलमिट

13

यह काम करेगा और इस समस्या से बचें कि आप अब माउस द्वारा पाठ के भाग का चयन नहीं कर सकते हैं।

$("input[type=text]").click(function() {
    if(!$(this).hasClass("selected")) {
        $(this).select();
        $(this).addClass("selected");
    }
});
$("input[type=text]").blur(function() {
    if($(this).hasClass("selected")) {
        $(this).removeClass("selected");
    }
});

1
माउस के साथ पाठ के भाग का चयन करने की क्षमता रखने के लिए महत्वपूर्ण है। मैं इसका और इसके A1
फिलाबर्ट पेरुसे

2
यहाँ बहुत ज्यादा चल रहा है, user2072367 का फ़ोकस / माउसअप सॉल्यूशन
जॉर्ज

@ जॉर्ज उपयोगकर्ता 0802367 बहुत अच्छा है, लेकिन इसमें कुछ गंभीर खामियां हैं। मेरे समाधान की जाँच करें: (:
एनिमेटेड

6

यह संस्करण आईओएस पर काम करता है और खिड़कियों के क्रोम पर मानक ड्रैग-टू-चयन को भी ठीक करता है

var srcEvent = null;

$("input[type=text],input[type=number]")

    .mousedown(function (event) {
        srcEvent = event;
    })

    .mouseup(function (event) {
        var delta = Math.abs(event.clientX - srcEvent.clientX) 
                  + Math.abs(event.clientY - srcEvent.clientY);

        var threshold = 2;
        if (delta <= threshold) {
                   try {
                        // ios likes this but windows-chrome does not on number fields
                        $(this)[0].selectionStart = 0;
                        $(this)[0].selectionEnd = 1000;
                    } catch (e) {
                        // windows-chrome likes this
                        $(this).select();
                    }
        }
    });

http://jsfiddle.net/Zx2sc/2/


बदसूरत कोशिश जोड़ने के लिए / ब्राउज़ करने के लिए पकड़ने के लिए संपादित
anihilnine

5

इनमें से अधिकांश समाधानों के साथ समस्या यह है कि वे इनपुट फ़ील्ड के भीतर कर्सर की स्थिति को बदलते समय सही ढंग से काम नहीं करते हैं।

onmouseupघटना क्षेत्र है, जिसके बाद निकाल दिया जाता है के भीतर कर्सर स्थिति में परिवर्तन onfocus(कम से कम क्रोम और एफएफ के भीतर)। यदि आप बिना शर्त छोड़ देते हैं mouseupतो उपयोगकर्ता माउस के साथ कर्सर की स्थिति को नहीं बदल सकता है।

function selectOnFocus(input) {
    input.each(function (index, elem) {
        var jelem = $(elem);
        var ignoreNextMouseUp = false;

        jelem.mousedown(function () {
            if (document.activeElement !== elem) {
                ignoreNextMouseUp = true;
            }
        });
        jelem.mouseup(function (ev) {
            if (ignoreNextMouseUp) {
                ev.preventDefault();
                ignoreNextMouseUp = false;
            }
        });
        jelem.focus(function () {
            jelem.select();
        });
    });
}
selectOnFocus($("#myInputElement"));

mouseupयदि फ़ील्ड में वर्तमान में फ़ोकस नहीं है तो कोड डिफ़ॉल्ट रूप से डिफ़ॉल्ट व्यवहार को रोक देगा । यह इन मामलों के लिए काम करता है:

  • फ़ील्ड पर ध्यान केंद्रित नहीं होने पर क्लिक करना
  • फ़ील्ड पर ध्यान केंद्रित करने पर क्लिक करना
  • क्षेत्र में वर्जित

मैंने इसका परीक्षण Chrome 31, FF 26 और IE 11 के भीतर किया है।


यह क्लिक आयोजनों के लिए पूरी तरह से काम करता है, लेकिन अगर मैं टैब का उपयोग अगले इनपुट क्षेत्र में जाने के लिए करता हूं, तो मैं देखता हूं कि सामग्री चयनित और डी-चयनित हो जाती है
टोक्स 82

4

इस धागे को पढ़ते हुए एक भयानक समाधान मिला

$(function(){

    jQuery.selectText('input:text');
    jQuery.selectText('input:password');

});

jQuery.extend( {
    selectText: function(s) { 
        $(s).live('focus',function() {
            var self = $(this);
            setTimeout(function() {self.select();}, 0);
        });
    }
});


अन्य सभी एचटीएमएल 5 पाठ प्रकारों के बारे में मत भूलना, जैसे 'इनपुट [टाइप = ईमेल]'
जेमीबारो

3

मैं 2016 के अंत से आ रहा हूं और यह कोड हाल के संस्करणों में काम करता है (jquery-2.1.3.js इस मामले में)।

if ($(element).is("input")) {
    $(element).focus(function () {
        $(element).select();
    });
}

2

मैं FF 16.0.2 और 1.8.1 jquery का उपयोग कर रहा हूं, जवाब में सभी कोड काम नहीं करते।
मैं इस तरह कोड का उपयोग करता हूं और काम करता हूं।

$("input[type=text]").focus().select();

4
यह उस सवाल का जवाब नहीं देता है, जो उपयोगकर्ता द्वारा फ़ील्ड को केंद्रित करने पर इनपुट बॉक्स की सामग्री का चयन करने का तरीका है । यह उपयोगकर्ता के इनपुट के बिना, तुरंत फ़ोकस करेगा और कोड का चयन करेगा।
saluce

@ मुझे समझ में नहीं आता कि आपका क्या मतलब है? प्रश्नकर्ता क्या चाहता है जब वह क्षेत्र का चयन करता है, तो सभी वर्तमान पाठ का चयन किया जाता है। और मेरे कोड को ऐसा करना चाहिए। मैं इसे अपने प्रोजेक्ट के लिए भी इस्तेमाल करता हूं, जब भी मैं यह जवाब लिखूंगा।
GusDeCooL

1
जब यह चलता है तो यह कोड सब कुछ फोकस और सेलेक्ट करेगा, लेकिन कोड, और खुद का, उपयोगकर्ता-जनरेट किए गए ईवेंट से बंधा नहीं है , जैसे कि टेक्स्टबॉक्स पर क्लिक करना। उदाहरण के लिए, $("input[type=text]").on('click', function () { $(this).focus.select(); })उपयोगकर्ता द्वारा बॉक्स पर क्लिक करने पर फ़ोकस चुनने और होने का कारण बनता है, क्योंकि उपयोगकर्ता द्वारा बॉक्स को क्लिक करने पर इसे निष्पादित किया जाता है। ईवेंट हैंडलर के बिना, कोड प्रश्न का उत्तर नहीं देता है, इसलिए डाउनवोट और टिप्पणी करता है। मूल रूप से, आपको "सभी वर्तमान पाठ चयनित हैं", लेकिन "जब वह क्षेत्र का चयन करता है" भाग नहीं मिला।
नमकीन

1
@GusDeCooL पूरी तरह से पर्याप्त (भले ही यह वही नहीं है जो उसने पूछा) मैं उसी परिणाम के लिए चाहता था जैसा आपने इस पर किया था :)
रोबी एवरिल

2
var timeOutSelect;
$("input[type=text]").focus(function() { 
        var save_this = $(this);
        clearTimeout(timeOutSelect);
        timeOutSelect = window.setTimeout (function(){ 
                save_this.select(); 
        }, 100);
});

अधिक सुरक्षा के लिए क्लियर टाइमआउट का उपयोग करें यदि आप दो इनपुट के बीच जल्दी से स्विच करते हैं .. तो क्लियर टाइमआउट पुराने टाइमआउट को साफ़ करें ...


कृपया अधिक जानकारी के साथ संपादित करें। कोड-ओनली एंड "ट्राय दिस" जवाबों को हतोत्साहित किया जाता है, क्योंकि उनमें कोई खोज योग्य सामग्री नहीं होती है, और यह नहीं समझाते कि किसी को "कोशिश" क्यों करनी चाहिए। हम ज्ञान के लिए संसाधन होने के लिए यहाँ एक प्रयास करते हैं।
ब्रायन टॉम्प्सेट - -

2

देशी जावास्क्रिप्ट के साथ महान काम करता है select()

$("input[type=text]").focus(function(event) {
   event.currentTarget.select();
});

या सामान्य तौर पर:

$("input[type=text]")[0].select()

1

या आप सिर्फ <input onclick="select()">वर्क्स परफेक्ट का उपयोग कर सकते हैं ।


नहीं, यह नहीं है। यह संपूर्ण को चुनने के लिए काम करता है। लेकिन मैन्युअल रूप से पाठ के एक भाग का चयन करने का प्रयास करें, आप इसे करने में सक्षम नहीं होंगे।
सुजय फड़के


0
<script>$.ready( $("input[type=text]").attr("onclick" , "this.select()"));<script>

यह शायद कम गुणवत्ता वाले उत्तर के रूप में चिह्नित किया जाएगा क्योंकि इसमें कोई भी स्पष्टीकरण नहीं है कि क्या चल रहा है।
tumultous_rooster

आपका $.readyकहना सही नहीं है। attrदस्तावेज़ तैयार होने तक आपको इसे विलंबित करने के लिए एक फ़ंक्शन पास करना होगा । आप इसे तुरंत कर रहे हैं फिर तत्व संग्रह को पास कर रहे हैं $.ready
doug65536

इसके अलावा, विशेष रूप से 'ऑनक्लिक' से बचें। का उपयोग करें addEventListener
doug65536

0

मैं हमेशा requestAnimationFrame()आंतरिक पोस्ट-इवेंट तंत्र पर कूदने के लिए उपयोग करता हूं और यह फ़ायरफ़ॉक्स में पूरी तरह से काम करता है। Chrome में परीक्षण नहीं किया गया है

$("input[type=text]").on('focus', function() {
    requestAnimationFrame(() => $(this).select());
});
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.