Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/408.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Firefox focus()设置焦点并立即模糊_Javascript_Jquery_Firefox_Focus_Onblur - Fatal编程技术网

Javascript Firefox focus()设置焦点并立即模糊

Javascript Firefox focus()设置焦点并立即模糊,javascript,jquery,firefox,focus,onblur,Javascript,Jquery,Firefox,Focus,Onblur,我有一个,此代码用于单击,它会创建一个新的字段并设置焦点: $('body').on('click','.numbers', function () { oldNumbersValue = $(this).html(); var input = $('<input />', {'style':'font-size:30pt','type': 'number','class':'number_inp

我有一个
,此代码用于单击,它会创建一个新的
字段并设置焦点:

            $('body').on('click','.numbers', function () {
                oldNumbersValue = $(this).html();
                var input = $('<input />', {'style':'font-size:30pt','type': 'number','class':'number_input', 'name': 'aname', 'value': oldNumbersValue});
                $(this).parent().append(input);
                input.focus();
            });
这在Chrome中有效,但在Firefox中无效!在Firefox中,它创建字段,将焦点设置在该字段上,并立即将其丢失

有什么解决办法吗

编辑:

使用合唱/不使用ff小提琴:

这里的问题是(出于一个我不是100%确定的原因),Firefox在
.number\u input
上触发
blur
事件,该事件发生在元素添加到文档之后,但在
focus()
实际调用之前

您可以在Firefox中看到这种情况,注意消息的顺序,指示在
.number\u input
上何时设置焦点和何时丢失焦点

修改代码的一种方法是不使用事件委派,而是将
blur
处理程序直接附加到
。number\u input

$('body').on('click', '.numbers', function (e) {
    oldNumbersValue = $(this).text();
    var input = $('<input />', {
        'style': 'font-size:30pt',
        'type': 'number',
        'class': 'number_input',
        'name': 'aname',
        'value': oldNumbersValue
    });
    $(this).parent().append(input);

    input.focus();
    input.blur(function(){
        $(this).remove();
    });
});
$('body')。关于('click','number',函数(e){
oldNumbersValue=$(this).text();
变量输入=$(''{
“样式”:“字体大小:30磅”,
“类型”:“编号”,
“类”:“数字输入”,
'姓名':'阿南',
“值”:oldNumbersValue
});
$(this.parent().append(输入);
input.focus();
input.blur(函数(){
$(this.remove();
});
});
这里有一个例子来演示。(不要担心由于不断添加新的事件处理程序而导致的任何潜在内存泄漏-这表明
.remove()
每次都应该删除这些事件处理程序。)

希望这有帮助!如果你有任何问题,请告诉我

$('body').on('click', '.numbers', function (e) {
    oldNumbersValue = $(this).text();
    var input = $('<input />', {
        'style': 'font-size:30pt',
        'type': 'number',
        'class': 'number_input',
        'name': 'aname',
        'value': oldNumbersValue
    });
    $(this).parent().append(input);

    input.focus();
    input.blur(function(){
        $(this).remove();
    });
});