0

表のセルをダブルクリックすると一般的な選択ボックスを作成するJavaScriptがあり、オプションをクリックすると、選択ボックスが削除され、選択されたオプションが記録されます。表のセルには、選択したオプションが表示されます。

ただし、表のセルをダブルクリックして選択ボックスを作成した後、オプションを選択せず​​に選択ボックスの外をクリックすると、選択ボックスが残り、それ以降のページの残りの部分が壊れます。

フォーカスが失われた場合に選択ボックスを削除したいのですが、入力ボックスで動作する onblur メソッドが選択ボックスで動作しないようです。

どのイベントがトリガーされるか知っている人はいますか?

表のセルをダブルクリックして選択ボックスを作成するときの Javascript コード:

var object_input = document.createElement ("SELECT");   //Put an select box in the cell

object_input.setAttribute("name", "course_price_select");
object_input.setAttribute("id", "course_price_select");
object_input.style.width = (current_cell.clientWidth - 20) + "px";

object_input.attachEvent ("onblur", focus_lost);  
object_input.attachEvent ("onkeypress", checkForEnter);

この 2 行は機能しません。(focus_lost および checkForEnter メソッドは alert('hi'); で始まるので、トリガーされていないことがわかります)

object_input.onchange = function() {focus_lost()};

//Populate with options....
4

1 に答える 1

1

attachEventIEのみの機能です。また、次のようにを使用してイベントをバインドする必要がありますaddEventListener

if(object_input.addEventListener)
{
    object_input.addEventListener('blur', focus_lost);  
    object_input.addEventListener('keypress', checkForEnter);
}
else
{
    object_input.attachEvent('onblur', focus_lost);  
    object_input.attachEvent('onkeypress', checkForEnter);
}

ここで jsFiddle のデモを見ることができます。

addEventListenerではイベントの前に を付ける必要がないonことに注意してくださいattachEvent

于 2013-02-20T11:24:00.437 に答える