单击按钮时删除字符,除非输入值为0

Delete character on button click unless the input value is 0

本文关键字:输入 按钮 删除 字符 单击      更新时间:2023-09-26

目前我正在使用以下代码从输入显示中删除一个字符:

function deleteChar(input) {
  input.value = input.value.substring(0, input.value.length - 1)
}

不幸的是,如果显示器只读取一个字符,则此功能在单击按钮时激活,将使输入显示为空白。在这种情况下,我希望它返回0。我尝试过以字符串长度为目标,但没有成功。如何修改此功能以达到预期效果?

function deleteChar(input) {
    if(input.value.length == 1) {
        input.value = 0;
    } else {
        input.value = input.value.substring(0, input.value.length - 1);
    }
}
<input type="text" value="123" id="inputElement" />
<button onclick="deleteChar(document.getElementById('inputElement'))">Click</button>

如果你想要一个更短的版本,可以随意使用这个(包括一个三元运算符):

function deleteChar(input) {
    input.value = input.value.length == 1 ? 0 : input.value.substring(0, input.value.length - 1);
}

你在寻找这样的东西吗:

function deleteChar(input) {
    if(input.value.length == 1) return 0;         //return 0 if there is only 1 character
    input.value = input.value.slice(0, -1);
}

我会为此使用三元运算符:

function deleteChar(input) {
    input.value = input.value.length === 1 
      ? 0 
      : input.value.substr( 0, input.value.length - 1 )
    ;
}

我提出了另一个三元版本

function deleteChar(input) {
  nV = input.value.substring(0, input.value.length - 1);
  input.value = nV ? nV : 0;
}

代码说明:

  1. 将新值分配给变量nV

  2. 基于三元算子分配input.value

此任务等效于以下内容:

if (nV) {
  input.value = nV;
} else {
  input.value = 0;
}