2012-12-05 29 views
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/

回答

1

這可以很容易地通過後手動聚焦選擇元件固定已經取代了文字輸入。

所以之前editOut()editfocus()功能,只需將:

$('select').focus(); 
相關問題