2010-07-04 8 views
5

एक बहुत ही सरल jQuery प्लगइन है: autotextarea। मैं इसे एक छोटी सी नई चाल सिखाना चाहता हूं: पहले कीस्ट्रोक की प्रतीक्षा करने के बजाय फॉर्म में प्रदान किए गए पाठ की क्षतिपूर्ति के लिए को का आकार बदलने के लिए। क्या कोई दयालु आत्मा कृपया मुझे बताएगी कि ऑनकीप के अलावा इसमें किस प्रकार का हैंडलर जोड़ना है?प्रारंभिक पाठ बनाम jquery ऑटो-ग्रोथ टेक्स्ट एरिया

यहां plugin in question है।

प्रारंभ करने के लिए बस (यह) बढ़ने के लिए एक कॉल जोड़ना काम नहीं करता है - स्पष्ट रूप से, जब इसे कहा जाता है, लेआउट पूरा नहीं होता है, और प्रभावी चौड़ाई छोटी होती है, इसलिए उन्हें बहुत कुछ मिलता है लंबा। यहां मेरा संशोधित संस्करण है: केवल परिवर्तन ही grow पर कॉल है।

//Public Method 
jQuery.fn.autoGrow = function(){ 
    return this.each(function(){ 
     setDefaultValues(this); 
     grow(this); 
     bindEvents(this); 
    }); 
}; 

संपादित:

document.ready पर इस रनिंग() काम नहीं करता है, क्योंकि पाठ क्षेत्र के कॉलम विशेषता अभी तक गणना नहीं कर रहा है। हालांकि, मैं कुछ के साथ आया, और शायद आप इसे साफ करने में मेरी मदद कर सकते हैं। cols पर ध्यान देने के बजाय, मैं $ (txtArea) .width() का उपयोग करता हूं, और फिर उस छिपे हुए div की चौड़ाई से विभाजित करता हूं जिसमें एक विशिष्ट वर्ण होता है। प्रत्येक पृष्ठ पर छिपी हुई div को रखने की आवश्यकता को छोड़कर, सब कुछ ठीक है। उस div के निर्माण या obviating के लिए कोई सुझाव मिला?

ठेठ पाठ क्षेत्र HTML:

<textarea name="text[0]">歐洲 聯盟 研究 論壇 研討會 議程表 主題 : 歐盟 新憲 的 困境 與 挑戰 日期 : 九十四 年 九月 二日 (星期五) 09 : 00~ 13 : 30 地點 : 台北市 福華 大 飯店 四 樓 CR 403 (台北市 仁愛路 三 段 160 號) 主辦 單位 : 歐洲 聯盟 研究 論壇 (European Union Research Forum , EURF) 國立 政治 大學 國際 關係 研究 中心 起迄 時間 流程09 : 00 -09 : 10 報 到 09 :10 -09 : 20 開場 林碧炤 (政治 大學 副校 長) 9 : 20 - 10 : 20 第一 場 : 歐盟 公投 後 的 衝突 主持人 尤清 (立法委員) 引言人 1. </textarea> 

और प्रासंगिक सीएसएस:

textarea { 
    width: 100%; 
    font-family: Arial, simsun; 
    font-size: 16px; 
} 
+0

क्या आप हमें जिस प्लगइन का उपयोग कर रहे हैं उसे एक लिंक प्रदान कर सकते हैं? –

+0

हाँ, मैंने लिंक जोड़ा। – bmargulies

+0

क्या आपने '$ (विंडो) .load (function() {...}) का उपयोग करने का प्रयास किया था। Document.ready के बजाय? – Mottie

उत्तर

1

मुझे यकीन है कि वास्तव में कैसे काम करता है प्लगइन नहीं कर रहा हूँ, लेकिन यह एक अस्थायी समाधान हो सकता है।

टेक्स्टरेरा को स्वतः बढ़ने के लिए सेट करने के बाद, गतिशील रूप से टेक्स्टरेरा में एक वर्ण जोड़ें ताकि यह प्लगइन ट्रिगर कर सके और फिर चरित्र को हटा दें। या आपको एक कीप्रेस को अनुकरण करने की आवश्यकता हो सकती है, या तो एक।

मुझे बताएं कि आपको कोड उदाहरण की आवश्यकता है या नहीं।

+0

मुझे चिंतित है कि अगर मैं उन लोगों में से किसी एक को 'तैयार' समय पर करता हूं तो मुझे समस्या होगी कि प्रभावी चौड़ाई उस बिंदु पर छोटी है। मुझे यह जानने की आवश्यकता है कि लेआउट पूरा होने के बाद * चौड़ाई पूरी होने के बाद * कुछ * के निष्पादन को कैसे रोकें। – bmargulies

+0

क्या आप पाठ को जावास्क्रिप्ट के माध्यम से टेक्स्टरेरा में डाल रहे हैं, या यह वास्तविक HTML में है? –

+0

वास्तविक एचटीएमएल। यह एक जेएसपी पृष्ठ है, और पाठ बस वहां बैठा है। – bmargulies

1

आप इस रन बना सकते हैं जब लेआउट तो जैसे पूरा हो गया है:

$(document).ready(function() { 
    // Code to run once document is ready 
}); 

या आप आशुलिपि संकेतन है, जो एक ही सटीक बात करता है का उपयोग कर सकते हैं:

$(function(){ 
    // Code to run once document is ready 
}); 

बस इसे अंदर लपेट उन दो लाइनों और यह काम करना चाहिए।

+0

नहीं, यही वह है जो मैं पहले से कर रहा हूं, और यह काम नहीं करता है। जाहिर है, पाठ क्षेत्रों की 'कोल्स' विशेषता बहुत आलसी है। – bmargulies

1

मुझे लगता है कि मैं आपकी समस्या को मिला ... आप पाठ क्षेत्र में पंक्तियों और कॉलम परिभाषित करने की जरूरत:

<textarea rows="5" cols="40" name="text[0]">歐洲 聯盟 研究 論壇 研討會 議程表 主題 : 歐盟 新憲 的 困境 與 挑戰 日期 : 九十四 年 九月 二日 (星期五) 09 : 00~ 13 : 30 地點 : 台北市 福華 大 飯店 四 樓 CR 403 (台北市 仁愛路 三 段 160 號) 主辦 單位 : 歐洲 聯盟 研究 論壇 (European Union Research Forum , EURF) 國立 政治 大學 國際 關係 研究 中心 起迄 時間 流程09 : 00 -09 : 10 報 到 09 :10 -09 : 20 開場 林碧炤 (政治 大學 副校 長) 9 : 20 - 10 : 20 第一 場 : 歐盟 公投 後 的 衝突 主持人 尤清 (立法委員) 引言人 1. </textarea> 

उन सेटिंग्स के बिना, मैं डिफ़ॉल्ट स्तंभ चौड़ाई और -1 के डिफ़ॉल्ट पंक्ति की ऊँचाई हो रही थी।

इसके अलावा, आप के रूप में यह गंदगी कार्यक्षमता


खैर होगा सीएसएस से width: 100% दूर करने के लिए, क्योंकि मैं ओसीडी है, मैं प्लगइन (demo) दुबारा लिखा होगा।

अब इसे अपने माता-पिता की चौड़ाई के आधार पर टेक्स्टरेरा में कोल्स की अनुमानित संख्या जोड़नी चाहिए (यह सबसे अच्छा काम करता है जब टेक्स्टरेरा सीएसएस चौड़ाई 100% है)। बस डेमो के बाईं ओर से स्क्रिप्ट को कॉपी करके एक फ़ाइल के रूप में बचाने के लिए, इसे कहते इस प्रकार है:

$(document).ready(function(){ 
    $("textarea").autoGrow(true); 
}); 

और सुनिश्चित करें कि पाठ क्षेत्र चौड़ाई भी 100% ... बुनियादी सीएसएस:

textarea { 
width: 100%; 
height: auto; 
overflow: hidden; 
font-family: Arial, simsun; 
font-size: 16px; 
} 

यदि आपको कोई समस्या है तो होलर मुझ पर हो।

+0

क्षमा करें, लेकिन मैं ऐसा नहीं कर सकता। पाठ क्षेत्र के लिए उपलब्ध चौड़ाई पर कब्जा करने की आवश्यकता है, निश्चित आकार नहीं होना चाहिए। – bmargulies

+0

मैंने अपना जवाब अपडेट कर दिया है ... मुझे उम्मीद है कि यह काम करता है! जबरदस्त हंसी। मैंने फ़ायरफ़ॉक्स, आईई 8 और क्रोम में अब तक इसका परीक्षण किया है। – Mottie

संबंधित मुद्दे