#javascript #html #jquery
Вопрос:
Пример:
если основное входное значение, например, «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>
Комментарии:
1. jsfiddle.net/dpxarmts (кроме того, вы пробовали что-нибудь перед публикацией здесь? проводил какие-нибудь исследования? гуглил, как получить последний символ строки? и т.д.)
Ответ №1:
Это то, чего ты хочешь. Сначала я проверяю последний символ входной строки с помощью регулярного выражения, обнаруживающего специальные символы, и если внутри ввода есть специальный символ и если значение нажатой вами кнопки также является специальным символом, я удаляю последний символ из строки. А затем в конце значение нажатой вами кнопки добавляется в конец строки.
function cal(btn)
{
let format = /[ `!@#$%^amp;*()_ -=[]{};':"\|,.<>/?~]/;
let input = document.getElementById("Main").value
if(format.test(input.charAt(input.length - 1)) amp;amp; 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:
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) amp;amp; !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) Вам нужно добавить значение только в том случае, если оно одно из следующих:
- Если во входных данных нет значения(пустой ввод), а текущее значение равно a
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 amp;amp; isNumber(currentValue)) ||
(isNumber(lastValue)) ||
(!isNumber(lastValue) amp;amp; 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)">