$ साइन के साथ मुद्रा प्रदर्शित करने के लिए एएसपी.NET टेक्स्टबॉक्स को मजबूर करें

क्या केवल एएसपी.NET टेक्स्टबॉक्स को मुद्रा मान स्वीकार करने का कोई तरीका है, और जब नियंत्रण मान्य होता है, तो पहले से $ $ चिह्न डालें?

उदाहरण:

10.23 $ 10.23 हो जाता है $ 1.45 $ 1.45 रहता है
10.a वैध संख्या न होने के कारण त्रुटि उठाता है

मेरे पास एक RegularExpressionValidator है जो सत्यापित कर रहा है कि संख्या मान्य है, लेकिन मुझे नहीं पता कि टेक्स्ट में $ साइन को कैसे बल देना है। मुझे संदेह है कि जावास्क्रिप्ट काम कर सकता है, लेकिन यह सोच रहा था कि ऐसा करने का कोई और तरीका है या नहीं।

3
मैं कुछ जावास्क्रिप्ट को जो कुछ भी चाहता था उसे करने के लिए तैयार कर रहा था। तैनाती पैकेज को सरल बनाने की आवश्यकता है और AJAX टूलकिट सिर्फ एक और निर्भरता थी।
जोड़ा लेखक Jason Z, स्रोत

5 उत्तर

ASP.NET मास्क किए गए संपादन AJAX नियंत्रण टूलकिट जो आप मांग रहे हैं उसे पूरा कर सकते हैं।

9
जोड़ा
मास्कड एडिट लिंक टूटा हुआ है।
जोड़ा लेखक Neil Knight, स्रोत
क्या वोट वोट?
जोड़ा लेखक Neil Knight, स्रोत
@NeilKnight - लगभग 5 साल पुराने टूटी हुई लिंक के लिए एक डाउनवोट? यह कठोर है, क्या आपको नहीं लगता? लिंक अब तय किए गए हैं, लेकिन आप (कोई भी जो समुदाय में 3 वर्षों से अधिक रहा है) टूटने वाले लिंक को ठीक करने में मदद कर सकता है।
जोड़ा लेखक Forgotten Semicolon, स्रोत

मुझे पता है कि एक जवाब पहले से ही स्वीकार कर लिया गया है, लेकिन मैं एक ही समस्या के साथ किसी और के लिए एक और समाधान फेंकना चाहता था और कई कामकाज की तलाश में था।

जिस तरह से मैं यह करता हूं कि उपयोगकर्ता इनपुट को बाध्य करने के लिए jQuery प्रारूप मुद्रा प्लगइन का उपयोग करना है ग्राहक पक्ष। सर्वर इनपुट पर इस इनपुट को पार्स करने के लिए केवल आवश्यकता है:

// directive
using System.Globalization;

// code
decimal input = -1;
if (decimal.TryParse(txtUserInput.Text, NumberStyles.Currency, 
    CultureInfo.InvariantCulture, out input))
{
    parameter = input.ToString();
}

इसका एकमात्र गिरावट यह है कि उपयोगकर्ता जावास्क्रिप्ट को बंद कर सकता है, इस मामले में RegEx सत्यापनकर्ता सर्वर-साइड चल रहा है, जो फॉल-बैक के रूप में काम करेगा। यदि नियंत्रण डेटाबेस है, तो आपको उचित मुद्रा स्वरूपण प्रदर्शित करने के लिए, दशमलवValue.ToString ("{0: c}") जैसा करना है, अन्य सभी द्वारा किया गया है।

इसके बारे में अच्छी बात यह है कि यदि उपयोगकर्ता टेक्स्टबॉक्स में प्रवेश करता है और यह क्लाइंट साइड पर $ 0.00 दिखाता है, तो सर्वर-साइड अगर कथन गलत होगा। यदि आपका दशमलव मान डेटाबेस में शून्य नहीं है, तो बस दशमलव इनपुट = -1 को दशमलव इनपुट = 0 में बदलें और आपके पास 0 का डिफ़ॉल्ट मान होगा।

5
जोड़ा
ज़रूर! बहुत काम का है।
जोड़ा लेखक Jim Schubert, स्रोत

ऐसा करने का एक और तरीका टेक्स्ट बॉक्स के बाईं ओर डॉलर के चिह्न को रखना होगा। क्या बॉक्स के अंदर डॉलर के हस्ताक्षर की वास्तविक आवश्यकता है या एक साधारण लेबल होगा?

4
जोड़ा
इसके लिए कोई वास्तविक आवश्यकता नहीं है, मैं बिक्री और विपणन आवश्यकताओं से असहज रूप से बंधी हूं। मैंने इसके खिलाफ बहस करने की कोशिश की, लेकिन उसे खारिज कर दिया गया।
जोड़ा लेखक Jason Z, स्रोत
एक अच्छा समाधान जो बॉक्स के बाहर सोच रहा है! मैं विरोध नहीं कर सका ...
जोड़ा लेखक Brian Hinchey, स्रोत
decimal sValue = decimal.Parse(txtboxValue.Text.Trim());
// Put Code to check whether the $ sign already exist or not.
//Try making a function returning boolean
//if Dollar sign not available do this
{ string LableText = string.Format("{0:c}", sValue); }
else
{ string LableText = Convert.ToString(sValue); }
2
जोड़ा
string.Format ("{0: c}", sValue) एक अच्छा समाधान है जब आपको कभी-कभी किसी लेबल में मान रखने की आवश्यकता होती है और दूसरी बार टेक्स्टबॉक्स की आवश्यकता होती है।
जोड़ा लेखक Tony L., स्रोत

सीएस में आप लाइनों के साथ एक पैटर्न मैच कर सकते हैं,

string value = text_box_to_validate.Text;

string myPattern = @"^\$(\d{1,3},?(\d{3},?)*\d{3}(\.\d{0,2})|\d{1,3}(\.\d{2})|\.\d{2})$";
Regex r = new Regex(myPattern);
Match m = r.Match(value);

if (m.Success)
{
    //do something -- everything passed
}
else
{
    //did not match
    //could check if number is good, but is just missing $ in front
}
0
जोड़ा
पहले से ही उस regex चल रहा है। मैं मूल्य दर्ज होने के बाद टेक्स्टबॉक्स मान में $ चिह्न डालना चाहता हूं, अधिमानतः पोस्टबैक के बिना।
जोड़ा लेखक Jason Z, स्रोत