जवाबों:
सीमा रहित इनपुट फ़ील्ड के चारों ओर एक सीमा के साथ एक निश्चित उपसर्ग या प्रत्यय के साथ एक इनपुट फ़ील्ड का अनुकरण करने पर विचार करें। यहाँ एक बुनियादी किकऑफ़ उदाहरण दिया गया है:
.currencyinput {
border: 1px inset #ccc;
}
.currencyinput input {
border: 0;
}
<span class="currencyinput">$<input type="text" name="currency"></span>
पैरेंट .input-icon
डिव का इस्तेमाल करें । वैकल्पिक रूप से जोड़ें .input-icon-right
।
<div class="input-icon">
<input type="text">
<i>$</i>
</div>
<div class="input-icon input-icon-right">
<input type="text">
<i>€</i>
</div>
आइकन को लंबवत रूप से संरेखित करें transform
और top
, और इसके लिए सेट pointer-events
करें none
ताकि क्लिक इनपुट पर केंद्रित हो। padding
और width
उपयुक्त के रूप में समायोजित करें :
.input-icon {
position: relative;
}
.input-icon > i {
position: absolute;
display: block;
transform: translate(0, -50%);
top: 50%;
pointer-events: none;
width: 25px;
text-align: center;
font-style: normal;
}
.input-icon > input {
padding-left: 25px;
padding-right: 0;
}
.input-icon-right > i {
right: 0;
}
.input-icon-right > input {
padding-left: 0;
padding-right: 25px;
text-align: right;
}
स्वीकृत उत्तर के विपरीत, यह इनपुट सत्यापन हाइलाइटिंग को बनाए रखेगा, जैसे कि एक त्रुटि होने पर एक लाल बॉर्डर।
JSFiddle उपयोग उदाहरण बूटस्ट्रैप और फ़ॉन्ट विस्मयकारी के साथ
float:left
के लिए input-symbol
div
input-symbol
कंटेनर के बाहर है
float
बुरा है इसलिए मैं अब display:inline-block
के साथ संयुक्त का उपयोग कर रहा हूँ vertical-align:bottom
:) मैं जल्दी से एक बेला नहीं बना सकता, हालांकि मेरे वर्तमान उदाहरण में बहुत अधिक सीएसएस चल रहा है ;-)
आप अपने इनपुट क्षेत्र को एक स्पैन में लपेट सकते हैं, जिसे आप position:relative;
। फिर आप :before
content:"€"
अपनी मुद्रा प्रतीक के साथ जोड़ें
और इसे बनाएं position:absolute
। काम JSFiddle
एचटीएमएल
<span class="input-symbol-euro">
<input type="text" />
</span>
सीएसएस
.input-symbol-euro {
position: relative;
}
.input-symbol-euro input {
padding-left:18px;
}
.input-symbol-euro:before {
position: absolute;
top: 0;
content:"€";
left: 5px;
}
अद्यतन यदि आप पाठ बॉक्स के बाईं या दाईं ओर यूरो प्रतीक रखना चाहते हैं। काम JSFiddle
एचटीएमएल
<span class="input-euro left">
<input type="text" />
</span>
<span class="input-euro right">
<input type="text" />
</span>
सीएसएस
.input-euro {
position: relative;
}
.input-euro.left input {
padding-left:18px;
}
.input-euro.right input {
padding-right:18px;
text-align:end;
}
.input-euro:before {
position: absolute;
top: 0;
content:"€";
}
.input-euro.left:before {
left: 5px;
}
.input-euro.right:before {
right: 5px;
}
जब से तुम ऐसा नहीं कर सकते ::before
के साथ content: '$'
आदानों पर और एक बिल्कुल तैनात तत्व जोड़ अतिरिक्त एचटीएमएल कहते हैं - मैं एक पृष्ठभूमि एसवीजी इनलाइन सीएसएस के लिए क्या करना पसंद है।
यह कुछ इस तरह चलता है:
input {
width: 85px;
background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' version='1.1' height='16px' width='85px'><text x='2' y='13' fill='gray' font-size='12' font-family='arial'>$</text></svg>");
padding-left: 12px;
}
यह निम्नलिखित आउटपुट देता है:
नोट: कोड सब एक लाइन पर होना चाहिए। आधुनिक ब्राउज़रों में समर्थन बहुत अच्छा है, लेकिन परीक्षण करना सुनिश्चित करें।
background-repeat: no-repeat;
कि इनपुट बॉक्स में $ दोहरा रहा था।
background-image
प्रस्तुत कर सकता है, इसका मतलब है कि इसका समर्थन नहीं किया जा सकता है, या सिस्टम-प्रदान किए गए विजेट का उपयोग करने के बजाय ब्राउज़र विजेट को प्रस्तुत कर सकता है।
मैंने यह सुनिश्चित करने के लिए कि संख्या अभी भी एक संख्या के रूप में बनी हुई है, इसलिए सीएसएस का उपयोग एक पूर्ण स्थिति का उपयोग करके इनपुट क्षेत्र में डॉलर के संकेत को धक्का देने के लिए किया।
<div>
<span style="position: absolute; margin-left: 1px; margin-top: 1px;">$</span>
<input type="number" style="padding-left: 8px;">
</div>
पाठ इनपुट फ़ील्ड के सामने '$' रखें, बजाय इसके अंदर। यह संख्यात्मक डेटा के लिए सत्यापन को बहुत आसान बनाता है क्योंकि आपको सबमिट करने के बाद '$' को पार्स करने की आवश्यकता नहीं है।
आप, JQuery.validate () (या अन्य) के साथ, मुद्रा को संभालने वाले कुछ क्लाइंट-साइड सत्यापन नियम जोड़ सकते हैं। यह आपको इनपुट क्षेत्र के अंदर '$' रखने की अनुमति देगा। लेकिन आपको अभी भी सुरक्षा के लिए सर्वर-साइड सत्यापन करना होगा और यह आपको '$' निकालने की स्थिति में वापस लाएगा।
$<input name="currency">
इसे भी देखें: टेक्स्टबॉक्स में इनपुट को प्रतिबंधित करना: केवल संख्या और दशमलव बिंदु की अनुमति देना
यदि आपको केवल सफारी का समर्थन करने की आवश्यकता है, तो आप इसे इस तरह कर सकते हैं:
input.currency:before {
content: attr(data-symbol);
float: left;
color: #aaa;
}
और एक इनपुट फ़ील्ड की तरह
<input class="currency" data-symbol="€" type="number" value="12.9">
इस तरह आपको अतिरिक्त टैग की आवश्यकता नहीं है और चिह्न जानकारी को मार्कअप में रखें।
एक अन्य समाधान जो मुझे पसंद है वह मुद्रा प्रतीक की एक छवि के लिए एक अतिरिक्त इनपुट तत्व का उपयोग करना है। यहां एक खोज पाठ क्षेत्र के भीतर एक आवर्धक कांच की छवि का उपयोग करके एक उदाहरण दिया गया है:
एचटीएमएल:
<input type="image" alt="Subscribe" src="/graphics/icons/search-button.png">
<input type="text" placeholder="Search" name="query">
सीएसएस:
#search input[type="image"] {
background-color: transparent;
border: 0 none;
margin-top: 10px;
vertical-align: middle;
margin: 5px 0 0 5px;
position: absolute;
}
इसके परिणामस्वरूप यहां बाएं साइडबार पर इनपुट है:
मैंने अभी उपयोग किया है: इनपुट से पहले और सामग्री के रूप में $ पारित किया
input{
margin-left: 20px;
}
input:before {
content: "$";
position: absolute;
}
.currencyinput {
border: 1px inset #ccc;
padding-bottom: 1px;//FOR IE & Chrome
}
.currencyinput input {
border: 0;
}
<span class="currencyinput">$<input type="text" name="currency"></span>
इन उत्तरों में से कोई भी वास्तव में मदद नहीं करता है यदि आप इनपुट फॉर्म पर अन्य टेक्स्ट फ़ील्ड के साथ बाईं सीमा को संरेखित करने से संबंधित हैं।
मैं डॉलर चिह्न को बाईं ओर -10px या बाईं ओर 5px की स्थिति में रखने की सलाह दूंगा (यह निर्भर करता है कि आप इसे इनपुट बॉक्स के अंदर या बाहर चाहते हैं)। अंदर के समाधान के लिए दिशा की आवश्यकता होती है: इनपुट css पर rtl।
आप दिशा से बचने के लिए इनपुट में पेडिंग भी जोड़ सकते हैं: आरटीएल, लेकिन यह इनपुट कंटेनर की चौड़ाई को उसी चौड़ाई के अन्य कंटेनरों से मेल नहीं खाने के लिए बदल देगा।
<div style="display:inline-block">
<div style="position:relative">
<div style="position:absolute; left:-10px;">$</div>
</div>
<input type='text' />
</div>
या
<div style="display:inline-block">
<div style="position:relative">
<div style="position:absolute; left:5px;">$</div>
</div>
<input type='text' style='direction: rtl;' />
</div>
https://i.imgur.com/ajrU0T9.png
उदाहरण: https://plnkr.co/edit/yshyuRMd06K1cuN9tFDv?p=preview
<style>
.currencyinput {
border: 1px inset #ccc;
border-left:none;
}
.currencyinput input {
border: 0;
}
</style>
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<input type="text" oninput="this.value = this.value.replace(/[^0-9]/.g, ''); this.value = this.value.replace(/(\..*)\./g, '$1');" style="text-align:right;border-right:none;outline:none" name="currency"><span class="currencyinput">%</span>
</body>
</html>
%
हां, यदि आप बूटस्ट्रैप का उपयोग कर रहे हैं, तो यह काम करेगा।
.form-control input {
border: none;
padding-left: 4px;
}
तथा
<span class="form-control">$ <input type="text"/></span>
.currencyinput {
border: 1px inset #ccc;
border-left:none;
}
.currencyinput input {
border: 0;`enter code here`
}
<input type="text" oninput="this.value = this.value.replace(/[^0-9]/.g, ''); this.value = this.value.replace(/(\..*)\./g, '$1');" style="text-align:right;border-right:none;outline:none" name="currency"><span class="currencyinput">%</span>