javascript - 仅在焦点上显示输入中的最后 3 个字符?

标签 javascript jquery css

我有包含小时和分钟的输入,但我只希望在输入集中时显示分钟。这可能吗?

我目前的方法是使用 jQuery 添加完整时间,但理想的做法是将完整时间作为整个时间的值,并只显示必要的内容。

因此,光标不会在您单击输入的位置结束(光标显示在最后。至少在 FF 中)。

其他更聪明的想法?不可能只用 css 做吧?未聚焦时将最后 3 个字符的颜色设置为透明或类似。

$('input').on('focus', function(e) {
  var full_time = $(this).attr('data-full-time');
  $(this).val(full_time);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" data-full-time="12:30" data-short-time="12" value="12" />

最佳答案

要使光标位于正确的位置,您可以使用伪造的表单域。这主要是 CSS,只有 JS 来同步字段。 (根据您的示例,我假设您的意思是您只想显示小时,而不仅仅是分钟。)

$('#real').on('input', function(e) {
  $('#fake').val($(this).val().split(':')[0]);
});
.input-container {
  position: relative;
}

.input-container input {
  position: absolute;
}

#fake {
  pointer-events: none;
}

#real {
  opacity: 0;
}

#real:focus {
  opacity: 1;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="input-container">
  <input id="fake" type="text" value="12" />
  <input id="real" type="text" value="12:30" />
 </div>

关于javascript - 仅在焦点上显示输入中的最后 3 个字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51805186/

相关文章:

javascript - 如何使用ajax将数据加载到下拉列表更改的表中

jquery - 有什么方法可以用 CSS/jQuery 手动排列列表项(只对它们排序一次,而不是四处拖动)?

javascript - 在 extjs 中创建侧面可折叠面板导航是正确的方法吗

javascript - 与同一列表中的对象连接

javascript - jQuery:选择父div之外的下一个div

css - 如何使div的位置固定,即使它是空的?

css - compass 可以合并 .css 文件吗?

javascript - 使用 php session 时出错

javascript - 检查元素是否有通过 AJAX 添加的 hasClass

javascript - 将 JavaScript 变量传递给 html。 jQuery