[Zope] Form data type coercion syntax and javascript
Mayers, Philip J
p.mayers@ic.ac.uk
Wed, 17 Jan 2001 11:50:54 -0000
Not a problem per-se, just a query - how are people dealing with things like
this:
<dtml-var standard_html_header>
<FORM>
<SELECT MULTIPLE NAME="test">
</SELECT>
<SCRIPT LANGUAGE="JavaScript">
function populate(form) {
for (var i=0;i<4;i++) {
form.test.options[i] = new Option("Red"+i,"color_red");
if (i == 0)
form.test.options[i].selected = true;
}
return false;
}
</SCRIPT>
<INPUT TYPE="BUTTON" onClick="populate(this.form)" VALUE="Fill in">
<INPUT TYPE="SUBMIT" VALUE="Go">
</FORM>
<dtml-var standard_html_footer>
If a user selects multiple values, of the dynamic list, Zope will coerce
them to a list when the form is input. *BUT*, if they select a single value,
it'll be a single string/integer. Normally, you'd do this:
<SELECT NAME="test:list">
But how do you access it from JavaScript then? I'm doing this:
function populate(form) {
var list = form;
for (var j=0;j<form.length;j++) {
if (form.elements[j].name == "test:list")
list = form.elements[j];
}
if (list == form)
return false;
for (var i=0;i<4;i++) {
list.options[i] = new Option("Red"+i,"color_red");
if (i == 0)
list.options[i].selected = true;
}
return false;
}
Anything more elegant?
Regards,
Phil
+----------------------------------+
| Phil Mayers, Network Support |
| Centre for Computing Services |
| Imperial College |
+----------------------------------+