我试图在输入框获得焦点时用选择列表替换输入框。 如果没有任何改变,则恢复为旧值。
一切都像预期的那样工作,但是当我只是聚焦输入框然后单击 focusout 事件之外的某个地方时,它并没有被触发。
这是设计使然还是我做错了什么?
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/
最佳答案
这可以通过在替换文本输入后手动聚焦 select 元素轻松解决。
所以在 editfocus()
函数中的 editOut()
之前,只需放置:
$('select').focus();
关于javascript - 选择未更改时未触发的焦点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13722225/