दिलचस्प पोस्ट
मैं कैसे देखूं कि मेरे proc में कौन से आउटपुट विकल्प उपलब्ध हैं? क्यों numpy के einsum तेजी से numpy के कार्यों में बनाया गया है? जावास्क्रिप्ट के साथ एचटीएमएल फार्म इनपुट टैग नाम तत्व एआरएआर एनएलटीके के साथ एक नया कॉर्पस बनाना बाश में दो सूचियों का चौराहे Git रीसेट – हार्ड से पुनर्प्राप्त करें? वेक्टर के लिए वैकल्पिक <bool> क्यों एक साधारण 1L के बजाय लंबे धारावाहिकVersionUID पैदा करते हैं? डॉट्स के साथ डेटाटाले कॉलम नाम के बारे में क्या है जो उन्हें WPF के डेटाग्रिड नियंत्रण के लिए अनुपयुक्त बना देता है? अजगर के माध्यम से कनेक्ट करते समय मैं डिफ़ॉल्ट MySQL कनेक्शन टाइमआउट कैसे बदल सकता हूँ? स्टार्टअप पर ग्रहण क्रैश; निकास कोड = 13 IOS पर सीएसएस ओवरफ्लो के साथ स्क्रॉल बार कैसे प्राप्त करें इकाई फ्रेमवर्क आदेश शामिल करें यादृच्छिक डुप्लिकेट डेटा उत्पन्न करता है PhpMyAdmin में UTF-8 वर्ण कैसे प्रदर्शित करें? iphone / ipad अभिविन्यास हैंडलिंग

क्या टेक्स्ट फ़ील्ड के लिए एक jQuery autogrow प्लगइन है?

मेरे पास एक टेक्स्टरेआ को सक्रिय करने के लिए कई प्लग-इन मिले हैं, लेकिन इन इनपुट टेक्स्ट फ़ील्ड नहीं हैं क्या कोई जानता है कि क्या कोई मौजूद है?

वेब के समाधान से एकत्रित समाधान "क्या टेक्स्ट फ़ील्ड के लिए एक jQuery autogrow प्लगइन है?"

यहां एक ऐसा प्लगइन है जो आप के बाद कर रहे हैं:

संपादित करें : मैथियास की टिप्पणी के अनुसार मैंने प्लगइन को तय किया है I 🙂

यहां एक डेमो देखें: http://jsfiddle.net/rRHzY

प्लगइन:

(function($){ $.fn.autoGrowInput = function(o) { o = $.extend({ maxWidth: 1000, minWidth: 0, comfortZone: 70 }, o); this.filter('input:text').each(function(){ var minWidth = o.minWidth || $(this).width(), val = '', input = $(this), testSubject = $('<tester/>').css({ position: 'absolute', top: -9999, left: -9999, width: 'auto', fontSize: input.css('fontSize'), fontFamily: input.css('fontFamily'), fontWeight: input.css('fontWeight'), letterSpacing: input.css('letterSpacing'), whiteSpace: 'nowrap' }), check = function() { if (val === (val = input.val())) {return;} // Enter new content into testSubject var escaped = val.replace(/&/g, '&amp;').replace(/\s/g,'&nbsp;').replace(/</g, '&lt;').replace(/>/g, '&gt;'); testSubject.html(escaped); // Calculate new width + whether to change var testerWidth = testSubject.width(), newWidth = (testerWidth + o.comfortZone) >= minWidth ? testerWidth + o.comfortZone : minWidth, currentWidth = input.width(), isValidWidthChange = (newWidth < currentWidth && newWidth >= minWidth) || (newWidth > minWidth && newWidth < o.maxWidth); // Animate width if (isValidWidthChange) { input.width(newWidth); } }; testSubject.insertAfter(input); $(this).bind('keyup keydown blur update', check); }); return this; }; })(jQuery); 

मेरे पास GitHub पर एक jQuery प्लगइन है: https://github.com/MartinF/jQuery.Autosize.Input

यह जेम्स के जवाब के समान दृष्टिकोण का उपयोग करता है लेकिन टिप्पणियों में उल्लिखित कुछ परिवर्तनों का उल्लेख है।

आप यहाँ एक लाइव उदाहरण देख सकते हैं: http://jsfiddle.net/mJMpw/6/

उदाहरण:

 <input type="text" value="" placeholder="Autosize" data-autosize-input='{ "space": 40 }' /> input[type="data-autosize-input"] { width: 90px; min-width: 90px; max-width: 300px; transition: width 0.25s; } 

आप बस न्यूनतम / अधिकतम-चौड़ाई सेट करने के लिए सीएसएस का उपयोग करते हैं और यदि आप एक अच्छा प्रभाव चाहते हैं तो चौड़ाई पर एक संक्रमण का उपयोग करें।

आप इनपुट तत्व पर डेटा-ऑटोसाइज़-इनपुट विशेषता के लिए जेसन नोटेशन में मान के रूप में अंत में स्थान / दूरी निर्दिष्ट कर सकते हैं।

बेशक आप बस इसे jQuery का उपयोग कर आरंभ कर सकते हैं

 $("selector").autosizeInput(); 

अच्छा प्लगइन, धन्यवाद! मैंने दो चीजें बदल दीं जो मेरी परियोजना में हालांकि बेहतर काम करने लगती हैं।

  1. मैंने टेस्टर टैग को डीआईवी में बदल दिया है, 'अप्रत्याशित कॉल विधि या गुण पहुंच' से बचने के लिए। IE8 में (हालांकि आपका डेमो IE8 में काम करता है। क्या कस्टम HTML टैग का उपयोग करने के लिए कोई विशेष कारण था?
  2. कोड के अंत के निकट बांड स्टेटमेंट के बाद, मैं चेक करने के लिए कॉल () को जोड़ता हूं, ताकि पेज लोड करने के तुरंत बाद टेक्स्ट बॉक्स का आकार बदल सके, अगर पाठ बॉक्स में स्टार्टअप पर पहले से ही इसमें कोई सामग्री है

उम्मीद है की यह मदद करेगा।

सिर्फ जेम्स के महान प्लगइन में एक छोटा सा सुधार साझा करना चाहता था। इस कोड को टेस्टेर तत्व के सीएसएस घोषणापत्र में पाठ इंडेंट के लिए खाते में जोड़ें:

 textIndent: 0 

इसके बिना, कुछ स्थितियों में, परीक्षक तत्व अनजाने में पाठ-इंडेंट को अन्यत्र से प्राप्त कर सकता है, इस प्रकार इनपुट का आकार बंद कर देता है

जेपी की तरह, मैं भी शुरुआत से सही आकार में इनपुट का आकार बदलना चाहता था, जो कि मैंने "टूगर ('कुंजीप')" ऑटोग्राइनपूट विधि कॉल में "से चेन करके, थोड़ा अलग तरीके से किया, जैसे:

 $('#contact_form').autoGrowInput({comfortZone: 7, minWidth: 10, maxWidth: 200}).trigger('keyup'); 

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

मैं भी बदल दिया था

 $(this).bind('keyup keydown blur update', check) 

सेवा मेरे

 $(this).bind('keyup blur update', check).bind('keydown', function() { setTimeout(check); }); 

ब्राउज़र द्वारा पुनः प्रर्दशित किए जाने के ठीक बाद फ़ील्ड का आकार बदलने के लिए यह कुछ बकबक से मैदान से छुटकारा दिलाता था।

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

 (function($){ $.fn.autoGrowInput = function(o) { o = $.extend({ maxWidth: 200, minWidth: 1, comfortZone: 1, width: 1 }, o); this.filter('input:text').each(function(){ var minWidth = o.minWidth || $(this).width(), maxWidth = o.maxWidth, val = '', input = $(this), testSubject = $('<tester/>').css({ position: 'absolute', top: -9999, left: -9999, width: 'auto', fontSize: input.css('fontSize'), fontFamily: input.css('fontFamily'), fontWeight: input.css('fontWeight'), letterSpacing: input.css('letterSpacing'), whiteSpace: 'nowrap' }), check = function() { if (val === (val = input.val())) {return;} // Enter new content into testSubject var escaped = val.replace(/&/g, '&amp;').replace(/\s/g,'&nbsp;').replace(/</g, '&lt;').replace(/>/g, '&gt;'); testSubject.html(escaped); // Calculate new width + whether to change var testerWidth = testSubject.width(), newWidth = testerWidth + o.comfortZone, currentWidth = input.width(); if (testerWidth < minWidth) { newWidth = minWidth; } else if (testerWidth > maxWidth) { newWidth = maxWidth; } input.width(newWidth + o.comfortZone); }; testSubject.insertAfter(input); $(this).bind('input', check); }); return this; }; })(jQuery); 

यदि आप पाठ बॉक्स बढ़ाना चाहते हैं, जब उसमें की स्ट्रिंग इसकी चौड़ाई के ऊपर विस्तार करती है, तो ऐसा कुछ आपके लिए काम करेगा … यह पाठ बॉक्स का आकार विशेषता का पता लगाता है। अगर स्ट्रिंग की लंबाई उस विशेषता पर जाती है, तो यह पाठ बॉक्स को कीज पर स्ट्रिंग की लंबाई तक बढ़ाता है।

नीचे की स्क्रिप्ट में, "# टेस्ट" एक टेक्स्टबॉक्स आईडी है

 <script language="javascript" type="text/javascript"> $(document).ready(function(){ $("#test").keyup(function(){ if($("#test").attr("size") < $("#test").val().length){ size = $("#test").val().length; $("#test").attr("size",size); } }) }); </script> 

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

Awsome प्लगइन जेम्स! धन्यवाद। मैंने अंत में चेक सुझाव को जेपी द्वारा हालांकि बहुत प्रभावी बनाया था

इसके अलावा मैंने अपने हिस्से में कुछ बदलाव जोड़े। यदि अधिकतम चौड़ाई में अधिकतम आकार को इनपुट के लिए आकार सेट करना चाहते थे तो मैंने जोड़ा:

 else if (widthexceeds){ input.width(o.maxWidth); } 

अगर नीचे है तो जांच के लिए isValidWidthChange जहां widthexceeds = newWidth > o.maxWidth