Пример:

Если основное входное значение вроде этого «1 + 23 +», то мне нужно заменить последний специальный символ новым, предположим, я нажимаю новые специальные символы, такие как минус, умножение и символ деления и т. д.

мой ожидаемый результат:

  • когда я нажимаю символ минуса> "1 + 23-"
  • когда я нажимаю символ умножения> "1 + 23 *"
<body>

<input type="text" id="Main">

<input class="ip" type="button" value="1" onclick="Cal(this)">
<input class="ip" type="button" value="2" onclick="Cal(this)">
<input class="ip" type="button" value="3" onclick="Cal(this)">

<input class="ip" type="button" value="+" onclick="Cal(this)">
<input class="ip" type="button" value="-" onclick="Cal(this)">
<input class="ip" type="button" value="*" onclick="Cal(this)">

</body>   
<script>

 function Cal(btn)
 {
 document.getElementById("Main").value+=btn.value;
 }

</script>
2
Subash 9 Окт 2021 в 10:56

2 ответа

Лучший ответ

Это то, что вам нужно. Сначала я проверяю последний символ входной строки с помощью регулярного выражения, определяющего специальные символы, и если внутри ввода есть специальный символ и если значение нажатой кнопки также является специальным символом, я удаляю последний символ из нить. А затем в конце значение нажатой кнопки добавляется в конец строки.

function cal(btn)
{
  let format = /[ `!@#$%^&*()_+\-=\[\]{};':"\\|,.<>\/?~]/;
  let input = document.getElementById("Main").value
  if(format.test(input.charAt(input.length - 1)) && format.test(btn.value)){
     input = input.slice(0, -1)
  }
  
  input += btn.value;
  document.getElementById("Main").value = input
}
<body>

<input type="text" id="Main">

<input class="ip" type="button" value="1" onclick="cal(this)">
<input class="ip" type="button" value="2" onclick="cal(this)">
<input class="ip" type="button" value="3" onclick="cal(this)">

<input class="ip" type="button" value="+" onclick="cal(this)">
<input class="ip" type="button" value="-" onclick="cal(this)">
<input class="ip" type="button" value="*" onclick="cal(this)">

</body>

Вы можете редактировать регулярное выражение в соответствии с вашими потребностями.

2
Silidrone 9 Окт 2021 в 08:11

1) Если last value не является number, то есть это symbol, а current value также является not a number. Короче говоря, если last value равно symbol и current value также является символом. В этом случае вам необходимо удалить last value и append current value

const display = document.getElementById("Main");
const appendValue = val => display.value += val;
const isNumber = n => !isNaN(parseInt(n));

function Cal(btn) {
  const lastValue = display.value.slice(-1);
  const currentValue = btn.value;

  if (!isNumber(lastValue) && !isNumber(currentValue))
    display.value = display.value.slice(0, display.value.length - 1) + currentValue;
  else appendValue(currentValue);
}
<input type="text" id="Main">

<input class="ip" type="button" value="1" onclick="Cal(this)">
<input class="ip" type="button" value="2" onclick="Cal(this)">
<input class="ip" type="button" value="3" onclick="Cal(this)">

<input class="ip" type="button" value="+" onclick="Cal(this)">
<input class="ip" type="button" value="-" onclick="Cal(this)">
<input class="ip" type="button" value="*" onclick="Cal(this)">

2) Вам нужно добавить значение, только если оно одно из следующих:

  • Если на входе нет значения (пустой ввод), а текущее значение - number.
  • Если last value - это number.
  • Если last value не является number и current value является number
const display = document.getElementById("Main");
const appendValue = val => display.value += val;
const isNumber = n => !isNaN(parseInt(n));

function Cal(btn) {
  const lastValue = display.value.slice(-1);
  const currentValue = btn.value;

  if ((!lastValue && isNumber(currentValue)) ||
    (isNumber(lastValue)) ||
    (!isNumber(lastValue) && isNumber(currentValue))) appendValue(currentValue);
  else display.value = display.value.slice(0, display.value.length - 1) + currentValue;
}
<input type="text" id="Main">

<input class="ip" type="button" value="1" onclick="Cal(this)">
<input class="ip" type="button" value="2" onclick="Cal(this)">
<input class="ip" type="button" value="3" onclick="Cal(this)">

<input class="ip" type="button" value="+" onclick="Cal(this)">
<input class="ip" type="button" value="-" onclick="Cal(this)">
<input class="ip" type="button" value="*" onclick="Cal(this)">
1
decpk 9 Окт 2021 в 09:28