How do I restrict a comma from a number validation?
Ive got the client Validation toolkit checking a field on my form before submitting it to my credit card processor. I am getting an error back from my processor "Invalid XML" only if the user enters a number in the thousands with a comma.
How would I either strip the comma out, or make the message pop up "Dont put a comma in your number"?
Thanks!
Rich
PS: Here's my code...
on the button...
WAValidateNM(document.form1.chargetotal,'- Invalid Amount',1,20000,2,'','',',.',document.form1.chargetotal,0,true);
function...
function WAValidateNM(formElement,errorMsg,minLength,maxLength,allowDecimals,roundDecimals,reformatDecimals,punctuationMarks,focusIt,stopIt,required) {
var isValid = true;
var theThousand = punctuationMarks.charAt(0);
var theDecimal = punctuationMarks.charAt(1);
var theCheck = 11/10;
var trueDecimal = (String(theCheck).charAt(1));
var value = formElement.value;
var decimalIndex = value.length;
if (punctuationMarks.indexOf(trueDecimal)<0 && value.indexOf(trueDecimal)>=0) {
isValid = false;
}
if (value.lastIndexOf(theDecimal)>=0) {
decimalIndex = value.lastIndexOf(theDecimal);
}
while (value.indexOf(theThousand)>=0) {
decimalIndex = value.length;
if (value.lastIndexOf(theDecimal)>=0) {
decimalIndex = value.lastIndexOf(theDecimal);
}
if ((decimalIndex-(value.lastIndexOf(theThousand)+1))%3 != 0)
isValid = false;
value = value.substring(0,value.lastIndexOf(theThousand)) + value.substring(value.lastIndexOf(theThousand)+1);
}
if (trueDecimal != theDecimal) {
while (value.indexOf(theDecimal)>=0) {
value = value.substring(0,value.indexOf(theDecimal)) + trueDecimal + value.substring(value.indexOf(theDecimal)+1);
}
}
if ((!document.WAFV_Stop && !formElement.WAFV_Stop) && !(!required && value=="")) {
for (var x=0; x<value.length; x++) {
if ((value.charAt(x)<0 || value.charAt(x) > 9) && (value.charAt(x) != " " && value.charAt(x) != "," && value.charAt(x) != ".")) {
isValid = false;
}
}
if (value == "") {
isValid = false;
}
var oldVal = String(value);
if (oldVal.indexOf(trueDecimal)>=0) {
while (oldVal.charAt(oldVal.length-1)=="0" || oldVal.charAt(oldVal.length-1) == trueDecimal) {
if (oldVal.charAt(oldVal.length-1) == trueDecimal) {
oldVal = oldVal.substring(0,oldVal.length-1);
break;
}
else oldVal = oldVal.substring(0,oldVal.length-1);
}
if (oldVal.indexOf(trueDecimal)==0)
oldVal = "0" + oldVal;
}
if (String(allowDecimals) !="" ) {
if (String(value).indexOf(".") > 0 && ((String(value).indexOf(".") + allowDecimals + 2 <= String(value).length) || allowDecimals == 0)) {
isValid = false;
}
}
value = parseFloat(value);
if (isNaN(value)) {
isValid = false;
}
else if (String(value).length!=String(oldVal).length && String(oldVal).substring(String(value).length+1).search(/^\.?0*$/) == -1 ) {
isValid = false;
}
else if ((String(minLength) != "" && minLength > value) || (String(maxLength) != "" && maxLength < value)) {
isValid = false;
}
}
if (!isValid) {
WAAddError(formElement,errorMsg,focusIt,stopIt);
}
else {
if (value != "") {
if (roundDecimals != "") {
value = Math.round(value*roundDecimals)/roundDecimals;
}
if (reformatDecimals != "") {
value = String(value);
if (value.indexOf(trueDecimal)<0)
value += trueDecimal;
if (value.indexOf(trueDecimal) < value.length - reformatDecimals) {
value = value.substring(0,value.indexOf(trueDecimal) + reformatDecimals + 1);
}
else {
while (value.indexOf(trueDecimal) > value.length - reformatDecimals - 1) {
value += "0";
}
}
}
}
if (trueDecimal != theDecimal) {
value = String(value);
while (value.indexOf(trueDecimal)>=0) {
value = value.substring(0,value.indexOf(trueDecimal)) + theDecimal + value.substring(value.indexOf(trueDecimal)+1);
}
}
if (roundDecimals != "" || reformatDecimals != "")
formElement.value = value;
}
}