<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<title>Images</title>
<form action="#">
<p>
<select name="maker" onChange="chainSelect( event, 'type', 'abc' )">
<option value="toyota">TOYOTA
<option value="nissan">NISSAN
<option value="honda">HONDA
</select>
<select name="type" onChange="chainSelect( event, 'abc')">
<optgroup label="toyota">
<option value="crown">CROWN
<option value="MR-2">MR-2
</optgroup>
<optgroup label="nissan">
<option value="GT-R">GT-R
<option value="Z">Z
</optgroup>
<optgroup label="honda">
<option value="NS-X">NS-X
<option value="S2000">S2000
</optgroup>
<option value="">選択してください
</select>
<input typ="text" name="abc">
</p>
</form>
<script type="text/javascript">
var chainSelect = (function ( getElement ) {
var buffer = [ ];
return function ( evt, targetSelect ) {
var cnt = 0, o, s;
if( 'string' !== typeof evt ) {
var e = evt. target ;
var t = getElement( targetSelect );
t.disabled = false;
if( 'SELECT' !== t.nodeName ) return ;
var n = t.name || t.id;
var v = e.options[ e.selectedIndex ].value;
var df, option;
df = buffer[ n ] || t.ownerDocument.createDocumentFragment();
for( cnt = 0; option = t.childNodes[ cnt ]; )
if( 'OPTGROUP' === option.nodeName )
df.appendChild( option );
else cnt++;
for( cnt = 0; option = df.childNodes[ cnt++ ]; )
if( 'OPTGROUP' === option.nodeName && option.label == v )
t.appendChild( option );
t.selectedIndex = 0;
buffer[ n ] = df;
cnt = 2;
}
while( s = arguments[ cnt++ ] )
if( o = getElement( s ) ) o.disabled = true;
};
})(
function ( n ) {
var d = document, e;
if( 'string' === typeof n )
e = d.getElementsByName( n )[0] || d.getElementById( n );
return e || n;
}
);
chainSelect( 'type', 'abc' );
</script>