Onblur事件第一次没有开火

时间:2014-02-18 06:04:41

标签: javascript jquery html ajax

我有一个应用程序,我需要更新数字,为此,我计划,当我点击数字容器,我将其转换为带有jquery的输入字段,然后在模糊我想要将其关闭为容器div内的纯文本然后触发ajax在DB中更新它,但是第一次模糊甚至没有触发 我的意思是,如果我点击数字上的最后时间,它会将其转换为输入字段,当我点击侧面(模糊均匀)时,模糊功能无效,如果我再次单击并单击侧面,则它工作正常。

这是我的代码。

   <div onclick="wrap($(this))">999999999</div>

<script>    
function wrap(sel)
                        {
                        sel.html('<input onblur="unwrap($(this));" value="'+sel.html()+'" />');
                        sel.attr('onclick','');
                        }
                        function unwrap(child)
                        {
                        alert('Unwrapping');
                        }
</script>

任何帮助/建议都会有所帮助。

2 个答案:

答案 0 :(得分:4)

这是因为当您第一次点击div时,输入框未获得焦点。没有焦点,就没有模糊。在创建它之后尝试给它重点......

function wrap(sel) {
    sel.html('<input onblur="unwrap($(this));" value="' + sel.html() + '" />');
    sel.attr('onclick', '');
    $("input").focus();
}

小提琴:http://jsfiddle.net/Pwb4y/

答案 1 :(得分:0)

试试这个.. 首先是Javascript,然后是DOM调用

<script>
    function wrap(sel) {
    sel.html('<input onblur="unwrap($(this));" value="' + sel.html() + '" />');
    sel.attr('onclick', '');
}

function unwrap(child) {
    alert('Unwrapping');
}
</script>
<div onclick="javascript:wrap(jQuery(this));">999999999</div>