Κατάργηση «$» πριν εκτελέσει το σενάριο ASP.Net RangeValidator

ψήφοι
1

Πώς μπορώ να αναγκάσει onchange σενάριο της εισόδου για να τρέξει πριν το σενάριο του RangeValidator του;

Θέλω να αποτρέψει μια αποτυχημένη επικύρωση όταν ο χρήστης εισάγει το σύμβολο του δολαρίου ή κόμμα.

function cleanUp(str) {
    re = /^\$|,/g;
    return str.replace(re, ); // remove $ and ,
}

<input type=text id=salary runat=server
onchange=this.value=cleanUp(this.value) />

<asp:RangeValidator ID=salaryValidator 
    runat=server ErrorMessage=Invalid Number
    ControlToValidate=salary Type=Double />

UPDATE:
Αποφάσισα να χρησιμοποιήσω ένα CustomValidator που ελέγχει το εύρος και χρησιμοποιεί μια τυπική έκφραση νόμισμα. Χάρη Μιχαήλ Kniskern.

function IsCurrency(sender, args) {
    var input = args.Value;

    // Check for currency formatting.
    // Expression is from http://regexlib.com/REDetails.aspx?regexp_id=70
    re = /^\$?([0-9]{1,3},([0-9]{3},)*[0-9]{3}|[0-9]+)(.[0-9][0-9])?$/;
    isCurrency = input.match(re);

    if (isCurrency) {
        // Convert the string to a number.
        var number = parseFloat(CleanUp(input));
        if (number != NaN) {
            // Check the range.
            var min = 0;
            var max = 1000000;
            if (min <= number && max >= number) {
                // Input is valid.
                args.IsValid = true;
                return;
            }
        }
    }

    // Input is not valid if we reach this point.
    args.IsValid = false;
    return;
}

function CleanUp(number) {
    re = /^\$|,/g;
    return number.replace(re, ); // remove $ and ,
}       

<input type=text id=salary runat=server />

<asp:CustomValidator ID=saleryValidator ControlToValidate=salary runat=server 
ErrorMessage=Invalid Number ClientValidationFunction=IsCurrency />
Δημοσιεύθηκε 09/12/2008 στις 22:37
πηγή χρήστη
Σε άλλες γλώσσες...                            


4 απαντήσεις

ψήφοι
3

Νομίζω ότι μπορεί να βελτιωθεί σε αυτό. Το γεγονός αυτό καθιστά τα κόμματα και τα σεντ ψηφία προαιρετικά:

^\$?([0-9]{1,3},?([0-9]{3},?)*[0-9]{3}|[0-9]+)(\.[0-9]{0,2})?$
Απαντήθηκε 04/03/2011 στις 01:02
πηγή χρήστη

ψήφοι
3

Έχετε δοκιμάσει τη χρήση ελέγχου CustomerValidator και σε συνδυασμό την λειτουργικότητα των μεθόδων καθαρισμού JS και τη μέθοδο RangeValidator.

Απαντήθηκε 09/12/2008 στις 23:09
πηγή χρήστη

ψήφοι
0

Απλά παρατήρησε ότι έχετε ένα «» για το δεκαδικό σημείο, αλλά αυτό σημαίνει ότι η regex θα δεχτεί καμία χαρακτήρας σε εκείνο το σημείο. Θα πρέπει να χρησιμοποιήσετε \.για την εν λόγω δεκαδικό ψηφίο.

/^\$?([0-9]{1,3},([0-9]{3},)*[0-9]{3}|[0-9]+)(\.[0-9][0-9])?$/
Απαντήθηκε 18/11/2009 στις 00:45
πηγή χρήστη

ψήφοι
0

Υπάρχει ένας τρόπος να γίνει αυτό με την εγγραφή το σενάριο? Ωστόσο, γιατί να μην χρησιμοποιούν μια τακτική Validator έκφραση για να βεβαιωθείτε ότι η είσοδος είναι σωστή;

Επίσης, η επικύρωσης Σειρά εκτελεί στα πεδία onblur js περίπτωση, όχι σε αλλαγή.

Απαντήθηκε 09/12/2008 στις 22:55
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more