0

这段代码写“我被选中输入!” 到控制台,但不选择输入中的文本

HTML:

<script src="http://code.jquery.com/jquery-2.0.3.min.js"></script>
<input type="text" id="foo">

和 javascript:

$(function() {
    $('#foo').on('change', function(){
        $(this).select();
    });
    $('#foo').on('select', function(){
        console.log("I'm selected input!");
    });
});

UPD 1: stopPropagation并且preventDefault机器人工作 UPD 2:此代码也不起作用:

$('#foo').on('change', function(){
    $(this).focusout(function(){
        $(this).select().focus();
    });
});

UPD 3:当我使用时,debugger我看到选定的文本

PS对不起我的英语不好:)

4

1 回答 1

0

有太多的事件同时在那里运行!所以你需要延迟select方法。另外,$(this) 在 setInterval/setTimeout 方法中是不同的,所以需要缓存如下:

 $(function() {

    $('#foo').change(function(){
        var $this=$(this);
        setTimeout(function(){
            $this.select();
        },10);
    });
    $('#foo').select(function(){
        alert("I'm selected input!");
    });
});

经多种浏览器测试

于 2013-11-04T15:27:44.000 回答