【问题标题】:"Rewind" input on blur()blur() 上的“倒带”输入
【发布时间】:2018-12-24 05:20:45
【问题描述】:

我有一个input 和text-overflow: ellipsis。是否可以在blur() 上显示文本的开头?现在它停留在光标所在文本的末尾。

考虑以下 GIF 试图演示该问题。

首先,我聚焦<input> 并进入输入Ctrl + Home 的开头。然后我通过再次聚焦并按下 Ctrl + End 并取消聚焦,转到<input> 的末尾。您可以看到,只有当我的光标位于输入的开头时,省略号才会出现。


我可能刚刚破解了它。测试不同的浏览器。编辑。在 Safari 中无法正常工作。 setSelectionRange 将焦点重新放在模糊的输入上。想法?

$("input").on('blur', function(e) {
  $(this).get(0).setSelectionRange(0,0);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" value="A bunch of text text text text text text text text text" style="width: 100px; text-overflow: ellipsis;">

【问题讨论】:

  • 是否可以在模糊时显示字符串的开头?意思是
  • 你能解释一下你的问题吗
  • @SeaBass 我已经为你的问题添加了一个 GIF 来尝试有效地展示这个问题。从你的描述开始真的很难理解。如果您认为图片不正确,或者您不希望在您的问题中使用它,请随时将其编辑出来。
  • @SeaBass Quicktime 和 ffmpeg。
  • 如果您破解了它,那么您可以将其作为答案发布,如果您不想发布,则可以删除问题

标签: javascript jquery html forms css-selectors


【解决方案1】:

有效,但在 Safari 中创建了一个循环,它再次设置焦点...有什么方法可以先设置选择范围然后模糊?

$("input").on('blur', function(e) {
  $(this).get(0).setSelectionRange(0,0);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" value="A bunch of text text text text text text text text text" style="width: 100px; text-overflow: ellipsis;">

【讨论】:

  • 有什么想法吗?谢谢!
  • 如果有人知道如何在 Safari 中解决这个问题,请告诉我?
  • 可以先模糊再设置范围再模糊。您只需要将变量定义为标志,因此一旦设置范围,然后手动触发模糊。在第二轮手动触发模糊时,您可以检查标志以了解是否需要再次设置范围。如果范围已经设置,则重置标志并且什么都不做
【解决方案2】:

需要的时候再模糊一下就好了,看看下面的代码,读一下cmets看看是怎么回事

// set true initially
var setRange = true;

$("input").on('blur', function(e) {
  var $this = $(this);
  
  // set range then trigger blur again, change setRange flag
  if (setRange) {
    $this.get(0).setSelectionRange(0, 0);
    setRange = false;
    $this.trigger("blur");
  } else {
    // range was set before, reset the flag so it will work next time
    setRange = true;
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" value="A bunch of text text text text text text text text text" style="width: 100px; text-overflow: ellipsis;">

【讨论】:

  • 谢谢!这给了我这个错误"message": "too much recursion",
  • 还有这个:"message": "Script error."。但是,我只是尝试在 Safari 中不使用整个模糊部分,现在它似乎在没有那个 hack 的情况下工作,所以他们可能在最新版本的 Safari 中修复了它。我猜问题解决了。至少对于新浏览器用户而言。
  • 更新了答案,标志设置应该在模糊触发之前消失。它现在应该可以按预期工作了
猜你喜欢
  • 2013-04-04
  • 2016-08-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-03-07
  • 2021-09-08
  • 2019-05-11
相关资源
最近更新 更多