javascript - 在输入类型文本中,为什么我无法添加 - 在输入四个字母后使用 javascript?
问题描述
我只是想创建这样的东西-在html中我有一个输入类型文本,只要输入值的长度为2,那么javascript就会在这之后添加一个连字符-如果值id“sd”那么javascript会使它成为“sd-”,它在控制台上工作,但它不会在视觉上改变输入的值(用户看不到)。
我想要一个改变输入值的解决方案,我可以看到输入中添加了一个连字符。
let dateA = document.getElementById("dateOne");
dateA.onkeyup = function(){
let dataAValue = this.value;
let dataAValueLength = this.value.length;
if(dataAValueLength == 2) {
let valueReplaced = dataAValue.replace(`${dataAValue}`, `${dataAValue}-`)
// console.log(dataAValue);
dataAValue = valueReplaced;
}
}
<input type="text" id="dateOne">
解决方案
您正在重新分配变量。您需要修改对象this
您可以通过使用来清理代码,+
而不是replace
使用三元运算符而不是if-else
let dateA = document.getElementById("dateOne");
dateA.onkeyup = function(){
this.value += this.value.length === 2 ? '-' : ''
}
<input type="text" id="dateOne">
推荐阅读
- html - HTML5 输入属性 UTF-8,最小/最大,无特殊字符
- c++ - 对类型“A *”的非常量左值引用不能绑定到不相关类型“std::shared_ptr ”的值
- android - 空对象引用 Textwatcher 上的 EditText.addTextChangedListener(android.text.TextWatcher)'
- git - 扫描 git 对象以进行不签出的提交
- php - Laravel 动态路由仍然可以通过 index.php 访问
- reactjs - 我如何在 Expo React Native 中从这里继续?
- php - 我需要 preg_replace 文本的某些部分
- php - 重写 Laravel 升级的匿名函数
- gridview - 如何在列中居中 GridView.builder?
- javascript - 覆盖权限不起作用| Discord.js 大师