3

入力ボックスがフォーカスされたときに、入力ボックスを選択リストに置き換えようとしています。何も変更されていない場合は、古い値に戻します。

すべてが期待どおりに機能しますが、入力ボックスにフォーカスしてからフォーカスアウト以外の場所をクリックすると、イベントが発生しません。

これは仕様によるものですか、それとも何か間違っていますか?

HTML:

<div id=test>
     <input type=text class=edit value=3 >
     <input type=hidden class=temps>
</div>​

そしてスクリプト:

$(function (){
    editfocus();     
    editout();            
});

function editfocus(){    
    $('.edit').unbind('focusin');
    $('.edit').bind('focusin', function() {
    console.log(this);
    var previous = this.value;
    $(this).siblings('.temps').val(previous);
    parentid=$(this).parent()[0].id;
    $('#'+parentid).children('.edit').replaceWith('<select class="edit listme" ><option value=1 >one</option><option value=2 >two</option></select>');
        editout();
    });
}
function editout(){
    $('.edit').unbind('focusout');
    $('.edit').bind('focusout', function() {
        parentid=$(this).parent()[0].id;
        oldval=$(this).siblings('.temps').val();
        $('#'+parentid).children('.edit').replaceWith('<input type=text class=edit   value="'+oldval+'" />');
        editfocus();
    });
}    ​

この jsfiddle も参照してください: http://jsfiddle.net/mandropil/f9jN3/

4

1 に答える 1

1

これは、テキスト入力を置き換えた後に select 要素を手動でフォーカスすることで簡単に修正できます。

したがってeditOut()editfocus()関数の前に、次のように配置します。

$('select').focus();
于 2012-12-05T11:35:34.867 に答える