相关疑难解决方法(0)

在Firefox中清除选择

我有这个功能

function smth() {
var container = null;
var newContainer = null;
if (window.getSelection) {  // all browsers, except IE before version 9
    alert("first if");
    var selectionRange = window.getSelection();
    if (selectionRange.rangeCount > 0) {
        var range = selectionRange.getRangeAt(0);
        container = range.commonAncestorContainer;
        newContainer = container;
    }
}
else {
    if (document.selection) {   // Internet Explorer
        alert("second if");
        var textRange = document.selection.createRange();
        container = textRange.parentElement();
    }
}

if (newContainer) {
    return newContainer.nodeName;
}
else {
    alert("Container object for the selection is not …
Run Code Online (Sandbox Code Playgroud)

javascript range selection clear

17
推荐指数
1
解决办法
1万
查看次数

window.getSelection()偏移HTML标签?

如果我有以下HTML:

<div class="content">
Vivamus <span>luctus</span> urna sed urna ultricies ac tempor dui sagittis.
</div>
Run Code Online (Sandbox Code Playgroud)

我在上面运行一个事件mouseup,看到所选文本的范围:

$(".content").on("mouseup", function () {
    var start = window.getSelection().baseOffset;
    var end = window.getSelection().focusOffset;
    if (start < end) {
        var start = window.getSelection().baseOffset;
        var end = window.getSelection().focusOffset;
    } else {
        var start = window.getSelection().focusOffset;
        var end = window.getSelection().baseOffset;
    }
    console.log(window.getSelection());
    console.log(start + ", " + end);
});
Run Code Online (Sandbox Code Playgroud)

Vivamus从内容中选择单词,它将记录1, 8,因为这是选择的范围.

但是,如果我选择单词urna,它将记录15, 20,但不会考虑<span>HTML 的元素.

反正对 …

javascript jquery selection

5
推荐指数
1
解决办法
5051
查看次数

在输入之间切换时如何防止突出显示所有文本?

我有许多需要重复填写的输入字段,因此我通常用它Tab来浏览表单。

字段具有需要前置的默认后缀值。当我通过鼠标单击将焦点集中在输入上时,它会按预期工作。

但是,当我在输入之间切换时,它会选择所有文本,这在我的情况下是不良行为。

看看这个:

function setCaretPosition(elem, caretPos) {
  if (elem == null) return;
  if (elem.createTextRange) {
    var range = elem.createTextRange();
    range.move('character', caretPos);
    range.select();
  } else if (elem.selectionStart) {
    elem.focus();
    elem.setSelectionRange(caretPos, caretPos);
  } else {
    elem.focus();
  }
}

$(document).ready(function() {
  $('input').focus(function() {
    setCaretPosition(this, 0);
  });
});
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="input1" value=" km/h" />
<input type="text" id="input2" value=" kg" />
Run Code Online (Sandbox Code Playgroud)

  • 当您在任何输入内部单击时,插入符号会设置在开头。
  • 当您Tab在输入之间插入符号时,未设置。相反,整个输入内容都会突出显示。

使用选项卡导航时如何防止文本输入突出显示其内容?

setTimeout我更喜欢不使用(如果可能的话)的答案。

html javascript

5
推荐指数
1
解决办法
975
查看次数

标签 统计

javascript ×3

selection ×2

clear ×1

html ×1

jquery ×1

range ×1