[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