Если вы используете jQuery, я бы в первую очередь использовал
$("#options").bind("change",function(){
//your code here
});
вместо того, чтобы устанавливать свойство .onchange напрямую - установка таких обработчиков событий, как правило, не рекомендуется по ряду причин.
Тем не менее, ваша основная проблема заключается в том, что вы пытаетесь связать этот обработчик событий еще до того, как ваш вход «options» будет создан. Если вы используете то, что я предложил выше, но вместо этого используете «живой», он будет работать, даже если ввод «опций» еще не существует
//i've attached keyup in this example, but you could try modifying it to "change"
$("#options").live("keyup",function(e){
var optionValue = parseInt(e.target.value);
$('#container').empty();
//note optionValue, not optionValue
//note "<" rather than "<=", otherwise if you type "1" you'll get 2 inputs
for (i=0;i<optionValue;i++)
{
$('<input type="text" value=""/>').appendTo('#container');
}
});
Также имейте в виду, что javascript чувствителен к регистру. Я исправил optionvalue в optionValue
Примечание: я не собираюсь "отвечать" на ваш "вопрос" здесь, но пытаюсь немного помочь. Мне кажется, что ваш «вопрос» связан с исправлением вашего кода, так что это означает, что вам действительно нужно много ответов на множество разных вопросов. Это только один из тех ответов.