在“单击事件”中选择和取消选中文本框中的值

时间:2014-09-08 11:15:36

标签: javascript jquery html selection

嗨朋友我在我的表单中有多个文本框,我没有在点击取消选择任何代码,事情是有些Chrome如何满足我的需要(当我再次点击时Chrome中的同样选中的文本框光标放在我再次点击的位置)但是当移动到其他浏览器时它没有发生(在 IE和FireFox中能够选择并且无法取消选择)。任何经历过这个的人,建议我做一些取消选择的代码。

Plz帮我解决这个问题,

以下是我的代码和 JSFiddle

HTML

<input Value="sdfsdfsdf">
<input Value="8545555">
<input Value="Billa">

JQ

$(document).on("click", "input:text", null, function (ev) {
    alert("hi");
    $(this).select();
    return this;
});

提前致谢...

2 个答案:

答案 0 :(得分:0)

关闭on click活动尝试使用on focus

$(document).on("focus", "input:text", null, function (ev) {
    $(this).select();
});

答案 1 :(得分:0)

试试这个 -

var selected = false;
$(document).on("click", "input:text", null, function (ev) {
    if (!selected) {
        $(this).select();
        selected = true;
    } else {
        selected = false;
        this.selectionStart = this.selectionEnd;//clearing the selection        
    }    
    return this;
});

DEMO

UPDATE -

如果您想在选择后光标位置保持不变取消选择

$("input:text").data("selectionStart", 0);
$("input:text").data("selected", false);

$(document).on("select", "input:text", null, function (ev) {
    if (this.selectionStart === this.selectionEnd) {
        $(this).data("selectionStart", this.selectionStart);
    }
});
$(document).on("click", "input:text", null, function (ev) {
    if ($(this).data("selected")==false) {
        $(this).select();
        $(this).data("selected", true);
    } else {
        this.selectionEnd = this.selectionStart = $(this).data("selectionStart");
        $(this).data("selected", false);
    }
    return this;
});

DEMO