Forum Moderators: open

Message Too Old, No Replies

simplify some code

new to javascript

         

bono

1:43 pm on Jul 19, 2005 (gmt 0)

10+ Year Member



Hey guys, Im tackling some javascript and I just know I could write this shorter usuing some sort of array...

function validate(){

var temp

if (document.form.firmness.value=="11") {
alert("Please enter 2 different firmnesses.")
return false
}
if (document.form.firmness.value=="22") {
alert("Please enter 2 different firmnesses.")
return false
}
if (document.form.firmness.value=="33") {
alert("Please enter 2 different firmnesses.")
return false
}
if (document.form.firmness.value=="44") {
alert("Please enter 2 different firmnesses.")
return false
}
if (document.form.firmness.value=="55") {
alert("Please enter 2 different firmnesses.")
return false
}
return true
}

Anyone know how its done?

cheers
bon

bono

1:44 pm on Jul 19, 2005 (gmt 0)

10+ Year Member



oh and I also need to repeat the process for other forms how would I go about that~?

CaseyRyan

2:26 pm on Jul 19, 2005 (gmt 0)

10+ Year Member



Instead of using the multiple If...Then...Else you can use a Switch...Case statement. It'll be more compact. Not sure if it reduces execution time.

It would end up something like this:


function Validate() {
switch (document.form.firmness.value) {
case "11","22","33","44","55" :
alert("Please enter 2 different firmnesses.") ;
return false;
default:
return true;
}

I guess you could also do something like this:


function Validate() {
if ((document.form.firmness.value/11) == floor(document.form.firmness.value/11)) {
alert("Please enter 2 different firmnesses.") ;
return false;
}else{
return true;
}
}

or (using the mod function):


function Validate() {
if ((document.form.firmness.value % 11) == 0) {
alert("Please enter 2 different firmnesses.") ;
return false;
}else{
return true;
}
}

or (using string functions):


function Validate() {
var temp = document.form.firmness.value;
if (temp.charAt(0) == temp.charAt(1)) {
alert("Please enter 2 different firmnesses.") ;
return false;
}else{
return true;
}
}

THere's a bunch of ways to do it I guess. Depends what you do when you break 100. will you go to 1010 and 1111?

-=casey=-

whoisgregg

4:38 pm on Jul 19, 2005 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



Wow, nice post CaseyRyan! Thanks for showing those different methods. :)

CaseyRyan

5:48 pm on Jul 19, 2005 (gmt 0)

10+ Year Member



Thanks, I like solving problems.

Here's a solution that would support more than single digit entries.


function Validate() {
var temp = document.form.firmness.value;
var bReturnValue = true;
if ((temp.length % 2) == 0) {
var iLen = (temp.length/2);
if (temp.substring(0,iLen) == temp.substring(iLen,iLen)){
alert("Please enter 2 different firmnesses.") ;
bReturnValue = false;
}
}
return bReturnValue;
}

-=casey=-