Forum Moderators: open

Message Too Old, No Replies

Help cleaning up JS code

cleaning up JS validation

         

syktek

1:18 am on Oct 11, 2006 (gmt 0)

10+ Year Member



Hi,

I am fairly new to javascript and I have written some code that checks to make sure a a text field contains numbers and not a 0.

Though it works, I'm sure there is a cleaner way to rewrite the code, any help would be appreciated.


<script>
function validQtyProdDetail() {
var flagQty = 0;
var validqty = /^([0-9]{1,3})$/;

if(document.form.qty.value==""){
flagQty++;
}
else if(document.form.qty.value<0){
flagQty++;
}
else if(document.form.qty.value==0){
flagQty++;
}
else if ((document.form.qty.value!="")&& (!validqty.test(document.form.qty.value))){
flagQty++;
}

if(flagQty!=0){
alert("Please enter a quantity greater than 0.");
document.form.qty.focus();
return false;
}
}
</script>

rocknbil

2:50 am on Oct 11, 2006 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



There's **always** a better way to do it. Probably better than the one below. :-) But this is what I like to do. Untested, and a little tired ATM . . . but not seeing any errors. :-)


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01
Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>quantity</title>
<script type="text/javascript">
function validQtyProdDetail() {
var obj = document.getElementById('qty');
var msg = '';
if (isNaN(obj.value)) { msg = 'Please enter numbers only for the quantity'; }
else if (! (obj.value>0)) { msg = 'Please enter a quantity greater than 0.'; }
if(msg!= ''){ alert(msg); obj.focus(); }
else { form.submit(); }
return false;
}
</script>
</head>
<body>
<form method="post" action="yourscript.cgi">
Quantity: <input type="text" name="qty" id="qty" size="3" maxlength="3" value="">
<input type="submit" name="submitButton" id ="submitButton" onClick="return validQtyProdDetail();"
value="Add">
</form>
</body>
</html>

RonPK

12:49 pm on Oct 11, 2006 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



As I am not really tired yet, here are my 2 cents:

else { form.submit(); }

You forgot to define

form
. But it actually may be easier (and shorter) to have the script
return true
if no errors are found.