I'm having problems with a <SELECT MULTIPLE> element in a form, and this seems like it is not just Mech, but a problem with HTTP::Form as well. In short, this item is a <SELECT MULTIPLE> object and when I first tried to set a value, I got error messages, so I changed my code to retreive the object and print out the possible values and the value names. It did not print out the values available in the code, so I changed my code to retreive an array of objects and found that this one <SELECT MULTIPLE> object was being treated as a number of OPTION objects. The HTML was not complete (the </OPTION> tags were missing), so I got the page, fixed it with a few regexes, then replaced the HTML, and that didn't fix the problem. After experimenting, I found that once I removed the MULTIPLE keyword from the <SELECT> tag, the item was then seen as one object, and I could use it as expected. I need to know if I'm doing something wrong, or why a <SELECT MULTIPLE> is not treated as one <SELECT> object, if this is a bug I need to report, or, if not, how I can select ONE value in a <SELECT MULTIPLE> object. I've included much more below.
Here's the code for the form object I'm dealing with (the form itself is okay, it seems to be this and a few other <SELECT MULTIPLE> objects that are the problem: <SELECT NAME=location MULTIPLE> <OPTION SELECTED> <OPTION Value='1' >East End <OPTION Value='2' >West End <OPTION Value='3' >Southside <OPTION Value='4' >Northside </SELECT> When I cleaned it up, it was like this: <SELECT NAME=location MULTIPLE> <OPTION SELECTED Value = ''> </OPTION> <OPTION Value='1' >East End</OPTION> <OPTION Value='2' >West End</OPTION> <OPTION Value='3' >Southside</OPTION> <OPTION Value='4' >Northside</OPTION> </SELECT> This did not make a difference. The only thing that did make a difference was when I removed "MULTIPLE". I changed my code to set the <SELECT> value to get the OPTION object(s), step through each one, and list the possible values and value names. Here's the subroutine I used: sub setselectname { my ($form, $option, $name, $val, @obj, @val); ($name, $val) = @_; if (!checkformelement($name, "option")) {return 0;} $form = $mech->current_form(); @opt = $form->find_input($name, "option"); print "--------------------------------------------------------\n"; print "Option name: $name, Count found: $#opt\n"; foreach (@opt) { print "Option:\n"; @val = $_->possible_values(); foreach (@val) { print "\tValue: $_\n"; } @val = $_->value_names(); foreach (@val) { print "\tName: $_\n"; } } return 1; } Originally, to set the <SELECT> objects value I used: $mech->select($name, $val); And once I realized the problem was with the MULTIPLE keyword, I tried: $mech->select($name, [EMAIL PROTECTED]) Just in case it needed an array (only the first array element was set). And here's the code it outputs if the MULTIPLE keyword is left in: -------------------------------------------------------- Option name: locatoin, Count found: 4 Option: Value: Value: Name: off Name: Option: Value: Value: 1 Name: off Name: East End Option: Value: Value: 2 Name: off Name: West End Option: Value: Value: 3 Name: off Name: Southside Option: Value: Value: 4 Name: off Name: Northside And here's the code it outputs if the MULTIPLE keyword is left out: -------------------------------------------------------- Option name: location Count found: 0 Option: Value: Value: 1 Value: 2 Value: 3 Value: 4 Name: Name: East End Name: West End Name: Southside Name: Northside So if the MULTIPLE keyword is in, it sees each <OPTION> as a separate item. I can understand that, but there is no way for me to access the entire <SELECT>...</SELECT> object as one form element so I can set the value of the <SELECT> object to one of the <OPTION> items. Am I doing something wrong? I'm under a deadline and everything was going great (I even thought I'd actually get a weekend off!) until this came up. I need to resolve it, so any help is greatly appreciated! Thanks! Hal