2011-08-12 11 views
1

私はjavascriptから選択入力を作成し、ユーザーがオプションを変更したときに関数をバインドしようとしています。これまでのところ、私は持っています:javascript select inputイベント

filter.change = function() { 
    console.log("CHANGED"); 
} 

何か他のものを選択すると何も起こりません。このコードで何が間違っていますか。また、関数で新しい選択値を取得するにはどうすればよいですか?ような何か:

console.log(this.value + "has been selected") 

答えて

10

あなたが接近していたが、あなたはonchangeを使用する必要があります、あなたがすべきaddEventListener(およびattachEvent)たびもちろん

filter.onchange = function() { 
    alert("CHANGED"); 
    //You can alert the value of the selected option, using this: 
    alert(this.value + " was selected"); 
} 

Delanが言ったように可能。例:あなたはjQueryを使用する場合は

//Define a onchange handler: 
var changeHandler = function() { 
    alert("CHANGED"); 
    //You can alert the value of the selected option, using this: 
    alert(this.value + " was selected"); 
} 
//First try using addEventListener, the standard method to add a event listener: 
if(filter.addEventListener) 
    filter.addEventListener("change", changeHandler, false); 
//If it doesn't exist, try attachEvent, the IE way: 
else if(filter.attachEvent) 
    filter.attachEvent("onchange", changeHandler); 
//Just use onchange if neither exist 
else 
    filter.onchange = changeHandler; 
+2

もちろん、利用可能な場合は 'addEventListener'を使うべきです。 –

+0

addEventListenerはIEで動作しますか?あなたは、なぜそれがより少ないブラウザサポートを持っている場合、addEventListenerが良いのかを説明できますか? – SMKS

5

あなたがこの方法を使用する場合は、プロパティ名がonchangeです:

filter.onchange = function() { 
    alert(this.value + "has been selected"); 
}; 

詳しい情報:

注:イベントハンドラを登録する別の方法もあります。これにより、同じイベントに対して複数のイベントハンドラを割り当てることができます。詳細はquirksmode.org - Advanced event registration modelsをご覧ください。

+0

の.onchange

filter.onchange = function() { alert(this.value + " was selected"); } 

を使用することができます利用可能な場合は 'addEventListener'を使用してください。 –

+0

なぜaddEventListenerを使用しますか? http://stackoverflow.com/questions/6929528/javascript-difference-event-handlers-listener –

+0

@Delan:私はそれが依存すると言います。確かにライブラリを作成する場合。あなた自身のサイトでそれを使用し、他のライブラリを使用しない場合、ブラウザの違いのすべてに関してこの方法が簡単です。 –

1

が、あなたは1がすべき、この

$('select').change(function(){ 
    alert($('select').val() + ' was just selected'); 
}); 

のようにそれを使用するか、または代わりに、もちろん.change

+3

これは間違いありませんが、まったく必要ありません。 –

関連する問題