[Javascript] .match() method

Clancy Jones clancyjones at hotmail.com
Mon Aug 2 23:18:29 CDT 2004


Thanks Peter, that has definitely got things rolling.

I now have another problem!

I have a form which has five groups of radio buttons, cat1, cat2 etc.  Based 
on the user's selection of these radio buttons I want to recommend one of 
three products when the form is submitted.  The criteria for this is that if 
3 or more of the checked radios have a checked value of a,b,c (indicating 
product a, b or c) then that product is the recommended product.  But if no 
selection was made to indicate product c for example then i get a 'length' 
is null or not an object error.  I've tried to trap this with things like 
if(aOccur.length) etc but no joy so far.

Here's the code...

<script langucat2="JavaScript">
function processForm(){
	var cat1Value
	var cat2Value
	var cat3Value
	var cat4Value
	var cat5Value
	//get the selected value for each category
	cat1Value = getRadioValues("cat1");
	cat2Value = getRadioValues("cat2");
	cat3Value = getRadioValues("cat3");
	cat4Value = getRadioValues("cat4");
	cat5Value = getRadioValues("cat5");

	//concatenate the values into a single string
	//which might be something like "acbaa"
	var formSelections = cat1Value+cat2Value+cat3Value+cat4Value+cat5Value;

	//work out how many occurrences of
	//each product indication are in
	//the formSelections string
	re = /a/ig;
	var aOccur = formSelections.match(re)
	re = /b/ig;
	var bOccur = formSelections.match(re)
	re = /c/ig;
	var cOccur = formSelections.match(re)

	var recommendation
	//the problem is here -
	//eg. if no "Product C" selections
	//were made then cOccur
	//causes a 'length' is null or not
	//an object error
	if(aOccur.length>=3){
		recommendation = "Product A"
	}
	if(bOccur.length>=3){
		recommendation = "Product B"
	}
	if(cOccur.length>=3){
		recommendation = "Product C"
	}
	alert("The recommended product is: " + recommendation);
}

function getRadioValues(paramRadioGroup){
	var radioGroup = document.Main[paramRadioGroup]
	for (var i=0; i<radioGroup.length; i++){
		if (radioGroup[i].checked)  {
			return radioGroup[i].value
		}
	}
}
</script>

Any help much appreciated!
Clancy


>From: "Peter Brunone" <peter at brunone.com>
>Reply-To: "[JavaScript List]" <javascript at LaTech.edu>
>To: "'[JavaScript List]'" <javascript at LaTech.edu>
>Subject: RE: [Javascript] .match() method
>Date: Mon, 2 Aug 2004 21:20:05 -0500
>
>Clancy,
>
>	I've never tried this before, but the documentation at
>
>http://msdn.microsoft.com/library/en-us/script56/html/js56jsmthmatch.asp
>
>says this:
>
>"If the global flag (g) is not set, Element zero of the array contains
>the entire match..."
>
>	Basically, it looks like when this flag is not set, you only get
>the first occurrence.  FYI, this method is meant to be used with a
>regular expression (or string containing regex pattern and flags) as the
>search criterion.
>
>	Anyway, you can read up at the link above and see if it helps.
>
>Cheers,
>
>Peter Brunone
>-----------------------
>Do the impossible.
>Go home early.
>
>www.EasyListBox.com
>-----------------------
>
>-----Original Message-----
>From: javascript-bounces at LaTech.edu
>[mailto:javascript-bounces at LaTech.edu] On Behalf Of Clancy Jones
>
>Hi, I haven't used the match() method before but am trying to use it in
>conjunction with the length property to find out how many instances of a
>
>substring are contained within a string.
>
>I grabbed this example from my Google search:
>
><script language="JavaScript">
>var s = "Tony was here. Not Bob, Tony's brother, but Tony himself."; var
>occur = s.match("Tony"); document.write(occur.length); </script>
>
>The site listing the above said the output should be 3 but I get 1.  I
>am
>using IE6.
>
>Can someone point me in the right direction?
>
>Thanks a lot,
>Clancy
>
>
>
>_______________________________________________
>Javascript mailing list
>Javascript at LaTech.edu
>https://lists.LaTech.edu/mailman/listinfo/javascript

_________________________________________________________________
Surf the net and talk on the phone with Xtra JetStream @  
http://xtra.co.nz/jetstream




More information about the Javascript mailing list