什么是香草JS或jQuery解决方案,将选择一个文本框的所有内容时,文本框接收焦点?


当前回答

如果你把这些事件链接在一起,我相信就不需要使用.one了,就像本文其他地方建议的那样。

例子:

$('input.your_element').focus( function () {
    $(this).select().mouseup( function (e) {
        e.preventDefault();
    });
});

其他回答

什么是JavaScript或jQuery解决方案,将选择一个文本框的所有内容时,文本框接收焦点?

您只需要添加以下属性:

onfocus="this.select()"

例如:

<input type="text" value="sometext" onfocus="this.select()">

(说实话,我不知道你为什么还需要其他东西。)

这不仅仅是Chrome/Safari的问题,我在Firefox 18.0.1中也遇到了类似的问题。有趣的是,这不会发生在MSIE!这里的问题是第一个鼠标点击事件强制取消选择输入内容,所以忽略第一个事件。

$(':text').focus(function(){
    $(this).one('mouseup', function(event){
        event.preventDefault();
    }).select();
});

timeOut方法会导致一种奇怪的行为,并且阻塞每个鼠标升起事件,您无法删除再次单击输入元素的选择。

这里的答案在某种程度上帮助了我,但当我在Chrome中单击向上/向下按钮时,我在HTML5数字输入字段上遇到了一个问题。

如果你点击其中一个按钮,并将鼠标放在按钮上,这个数字就会不断变化,就像你一直按住鼠标按钮一样,因为鼠标被扔掉了。

我通过删除mouseup处理程序来解决这个问题,一旦它被触发,如下所示:

    $("input:number").focus(function () {
        var $elem = $(this);
        $elem.select().mouseup(function (e) {
            e.preventDefault();
            $elem.unbind(e.type);
        });
    });

希望这能在未来帮助到人们…

注意:如果你在ASP中编程。NET中,您可以使用ScriptManager运行脚本。c#中的RegisterStartupScript:

ScriptManager.RegisterStartupScript(txtField, txtField.GetType(), txtField.AccessKey, "$('#MainContent_txtField').focus(function() { $(this).select(); });", true );

或者在其他答案中建议的HTML页面中输入脚本。

我的解决办法是使用暂停。看起来还行

$('input[type=text]').focus(function() {
    var _this = this;
    setTimeout(function() {
        _this.select();
    }, 10);
});