C
Covad
Hi all,
For some reason my change() function is only called when the page loads. I'd
much rather it gets called when the select changes.
Here's the code:
window.onload = init;
function init() {
var new_select = new Selector('tdata','myselect','myid');
var new_select_list = new DataSource("some_list");
new_select_list.addItem(1,"One");
new_select_list.addItem(2,"Two");
new_select_list.addItem(3,"Three");
new_select_list.addItem(4,"Four");
new_select_list.addItem(5,"Five");
new_select.setDataSource(new_select_list);
new_select.formInput("form","input");
}
Selector = function(container_id,name,id) {
var container = document.getElementById(container_id);
this.node = document.createElement("select");
//this.node = new Select();
container.appendChild(this.node);
this.node.name = name;
this.node.id = id;
}
Selector.prototype.setDataSource = function(ds) {
this.dataSource = ds;
for(var i = 0; i < ds.items.length; i++) {
if(ds.items != undefined) {
var option = new Option(ds.items,i,false,false);
this.node.options[this.node.options.length] = option;
}
}
}
Selector.prototype.formInput = function(form,element) {
var myform = document.getElementById(form);
this.input = document.createElement("input");
this.input.name = element;
//this.input.type = "hidden";
myform.insertBefore(this.input,myform.firstChild);
this.node.onchange = change(this);
}
function change(selector) {
alert("hello");
selector.input.value = selector.node.value;
}
DataSource = function(name) {
this.name = name;
this.items = new Array();
}
DataSource.prototype.addItem = function(id,item) {
this.items[id] = item;
}
and the html:
<html>
<head>
<script defer src="/javascript/selectors.js"
type="text/javascript"></script>
</head>
<body>
<form id=form>
<table border=1>
<tr>
<td>
Select:
</td>
<td id=tdata>
</td>
</tr>
</table>
</form>
</body>
</html>
For some reason my change() function is only called when the page loads. I'd
much rather it gets called when the select changes.
Here's the code:
window.onload = init;
function init() {
var new_select = new Selector('tdata','myselect','myid');
var new_select_list = new DataSource("some_list");
new_select_list.addItem(1,"One");
new_select_list.addItem(2,"Two");
new_select_list.addItem(3,"Three");
new_select_list.addItem(4,"Four");
new_select_list.addItem(5,"Five");
new_select.setDataSource(new_select_list);
new_select.formInput("form","input");
}
Selector = function(container_id,name,id) {
var container = document.getElementById(container_id);
this.node = document.createElement("select");
//this.node = new Select();
container.appendChild(this.node);
this.node.name = name;
this.node.id = id;
}
Selector.prototype.setDataSource = function(ds) {
this.dataSource = ds;
for(var i = 0; i < ds.items.length; i++) {
if(ds.items != undefined) {
var option = new Option(ds.items,i,false,false);
this.node.options[this.node.options.length] = option;
}
}
}
Selector.prototype.formInput = function(form,element) {
var myform = document.getElementById(form);
this.input = document.createElement("input");
this.input.name = element;
//this.input.type = "hidden";
myform.insertBefore(this.input,myform.firstChild);
this.node.onchange = change(this);
}
function change(selector) {
alert("hello");
selector.input.value = selector.node.value;
}
DataSource = function(name) {
this.name = name;
this.items = new Array();
}
DataSource.prototype.addItem = function(id,item) {
this.items[id] = item;
}
and the html:
<html>
<head>
<script defer src="/javascript/selectors.js"
type="text/javascript"></script>
</head>
<body>
<form id=form>
<table border=1>
<tr>
<td>
Select:
</td>
<td id=tdata>
</td>
</tr>
</table>
</form>
</body>
</html>