ユーザーがキーボードを使用してselect要素(ドロップダウンリスト)の値を変更できるアプリケーションでjsファイルを実行しています。ユーザーが(このファイルを追加する前の通常の方法で)この値を変更すると、コードはバックエンドで実行され、ビューが変更されます。このため、ユーザーがキーボードを使用する場合、プログラムで値が変更されたときに呼び出されることはないため、変更イベントを手動で呼び出す必要があります。これはIEでは問題なく動作していますが、Chromeでは動作しません。これはコードです:Chromeのselect要素で手動で.change()が起動しない
onkeydown = function(e){
if(e.ctrlKey && e.keyCode == 37) {
e.preventDefault();
$("#ctl00_ContentPlaceHolder1_ddlTemplate").focus();
var myOpts = document.getElementById('ctl00_ContentPlaceHolder1_ddlTemplate').options;
var currIndex = myOpts.selectedIndex;
var newVal;
if (currIndex > 0) {
newVal = myOpts[currIndex-1].value;
$("#ctl00_ContentPlaceHolder1_ddlTemplate").val(newVal);
}
}
if(e.ctrlKey && e.keyCode == 39) {
e.preventDefault();
$("#ctl00_ContentPlaceHolder1_ddlTemplate").focus();
var myOpts = document.getElementById('ctl00_ContentPlaceHolder1_ddlTemplate').options;
var currIndex = myOpts.selectedIndex;
var newVal;
if (myOpts.length > currIndex + 1) {
newVal = myOpts[currIndex+1].value;
$("#ctl00_ContentPlaceHolder1_ddlTemplate").val(newVal);
}
}
}
$(templateDDL).blur(function(){
$(templateDDL).change();
});
templateDDLは、完全なセレクタ名「#ctl00_ContentPlaceHolder1_ddlTemplate」を含む単なる変数です。私はぼかしイベントにうまく行きます。 (コンソールを使ってテストされますが)$(templateDDL).change()は何もしません。
コードを正しくフォーマットしてください。 –
セレクトコントロールの値を設定することも覚えておいてください。セレクトコントロールの変更イベントが発生します –