माइकल के जवाब के आधार पर, मैंने jQuery का उपयोग करके इसका अपना संस्करण बनाया है। मुझे लगता है कि यह अधिकांश उत्तरों का एक क्लीनर / छोटा संस्करण है और यह काम पूरा करने के लिए लगता है।
मैं यहाँ पर ज्यादातर लोगों को इनपुट टेक्स्ट लिखने के लिए स्पैन का उपयोग करके चौड़ाई प्राप्त करने का काम कर रहा हूँ। तब मैं चौड़ाई सेट कर रहा हूँ जब क्रियाएँ keyupऔरblur कहा जाता है।
यहाँ एक काम कोडपेन है । इस कोडपेन से पता चलता है कि इसका उपयोग कई इनपुट फ़ील्ड के साथ कैसे किया जा सकता है।
HTML संरचना:
<input type="text" class="plain-field" placeholder="Full Name">
<span style="display: none;"></span>
jQuery:
function resizeInputs($text) {
var text = $text.val().replace(/\s+/g, ' '),
placeholder = $text.attr('placeholder'),
span = $text.next('span');
span.text(placeholder);
var width = span.width();
if(text !== '') {
span.text(text);
var width = span.width();
}
$text.css('width', width + 5);
};
उपरोक्त फ़ंक्शन इनपुट मान प्राप्त करता है, अतिरिक्त रिक्त स्थान को ट्रिम करता है और चौड़ाई प्राप्त करने के लिए टेक्स्ट को स्पैन में सेट करता है। यदि कोई पाठ नहीं है, तो यह प्लेसहोल्डर प्राप्त करता है और इसके बजाय स्पैन में प्रवेश करता है। एक बार जब यह पाठ को स्पैन में प्रवेश करता है तो इनपुट की चौड़ाई निर्धारित करता है। + 5चौड़ाई पर क्योंकि बिना कि इनपुट एज ब्राउज़र में एक छोटा सा काट हो जाता है।
$('.plain-field').each(function() {
var $text = $(this);
resizeInputs($text);
});
$('.plain-field').on('keyup blur', function() {
var $text = $(this);
resizeInputs($text);
});
$('.plain-field').on('blur', function() {
var $text = $(this).val().replace(/\s+/g, ' ');
$(this).val($text);
});
अगर इसमें सुधार किया जा सकता है तो कृपया मुझे बताएं क्योंकि यह सबसे साफ समाधान है जिसके साथ मैं आ सकता हूं।