Form data type coercion syntax and javascript
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 | +----------------------------------+
On Wed, 17 Jan 2001, Mayers, Philip J wrote:
<SELECT NAME="test:list">
But how do you access it from JavaScript then? I'm doing this: list = form.elements[j];
list = form.elements["test:list"]; Oleg. ---- Oleg Broytmann http://www.zope.org/Members/phd/ phd@phd.pp.ru Programmers don't die, they just GOSUB without RETURN.
participants (2)
-
Mayers, Philip J -
Oleg Broytmann