Я не думаю, что есть кросс-браузерная поддержка для скрытия опций выбора.
Вот один из способов сделать это.Использует более jQuery-подобный метод обработки событий, поэтому вам нужно удалить встроенный onchange
из HTML.
Попробуйте: http://jsfiddle.net/W9KvT/
var options = [
['1A','1B','1C'],
['2A','2B','2C']
];
$('select[name=choices]').change(function() {
var idx = $(this).children(':selected').index();
var set = '';
for(var i = 0, len = options[idx].length; i < len; i++) {
set += '<option>' + options[idx][i] + '</option>';
}
$('select[name=sub]').html(set);
}).change();
Если вы не хотите каждый раз генерировать их на лету, вы можете создать каждую строку параметров и сохранить их в массиве, загружая их аналогичным образом.
Попробуйтеэто из: http://jsfiddle.net/W9KvT/1
var options = [
'<option>1A</option><option>1B</option><option>1C</option>',
'<option>2A</option><option>2B</option><option>2C</option>'
];
$('select[name=choices]').change(function() {
var idx = $(this).children(':selected').index();
$('select[name=sub]').html(options[idx]);
}).change();
РЕДАКТИРОВАТЬ: Как отмечено @ You , чтобы обеспечить совместимость с браузерами, которые имеютJavaScript отключен, лучше всего иметь все доступные опции, доступные при загрузке страницы.Затем вы можете использовать приведенный выше код, чтобы перезаписать их для js-браузеров.
Элементы <optgroup>
из ответа @ You будут отличной идеей в этом случае.