如何知道文本框中的文本是否被选中?

Jim*_*mbo 42 javascript jquery textbox input

我有<input type='text'>只允许数字字符的文本框,不会让用户多次输入点(.).问题是,如果选中文本框中的文本,用户打算用点覆盖内容,从而允许它!问题是,如何在javascript中判断该文本框中的文本是否被选中.

谢谢

Tim*_*own 55

以下内容将告诉您是否在所有主流浏览器的文本输入中选择了所有文本.

示例:http://www.jsfiddle.net/9Q23E/

码:

function isTextSelected(input) {
    if (typeof input.selectionStart == "number") {
        return input.selectionStart == 0 && input.selectionEnd == input.value.length;
    } else if (typeof document.selection != "undefined") {
        input.focus();
        return document.selection.createRange().text == input.value;
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 那么,他们看起来怎么样? (30认同)

Sun*_*pta 6

2017年特定答案 -最近遇到了同样的问题。

我们只允许用户一次输入3位数字。当用户尝试输入第四个字符时,我们返回false。

当用户进行选择并试图覆盖值时,这成为一个问题。

从蒂姆的答案中得到一点提示。我知道我想看看是否与selection value相同input's value

在现代浏览器中,我是通过以下方式实现的:

document.getSelection().toString() === input.value // edited
Run Code Online (Sandbox Code Playgroud)

希望这对某人有帮助。