javascript - 选择未更改时未触发的焦点

标签 javascript jquery select focusout

我试图在输入框获得焦点时用选择列表替换输入框。 如果没有任何改变,则恢复为旧值。

一切都像预期的那样工作,但是当我只是聚焦输入框然后单击 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/

相关文章:

javascript - 使用 JS 更改 CSS 中的剪辑

javascript - 在不改变位置的情况下淡入淡出内联div?

javascript - 如何在 Vanilla JS 中从位置过渡到动画?

javascript - 无法让 jquery 代码每秒执行一次..?

javascript - 如何动态调整图像大小以适应 div?

javascript - 未捕获的类型错误 : Cannot read property 'remove' of undefined

javascript - 如何有效地散列图像以在浏览器中进行索引搜索?

mysql - 如何创建链接到 3 个表的子查询?

sql - T-sql根据子选择结果更新值

c - 如何在 C 中多路复用缓冲 IO?