#javascript #jquery #asp.net #events
#javascript #jquery #asp.net #Мероприятия
Вопрос:
У меня есть одно текстовое поле. событие onkeypress вызывает функцию checkPostalCode.
<asp:TextBox ID="txtPostalCode" runat="server" CssClass="textbox-width form-control" onkeypress="return checkPostalCode(event,this)" TabIndex="14" MaxLength="10"></asp:TextBox>
JavaScript:
function checkPostalCode(e, t) {
if (window.event) {
var charCode = window.event.keyCode;
} else if (e) {
var charCode = e.which;
}
//Some other Funtionalities
}
Есть ли какой-либо метод, с помощью которого мы можем вводить любой символ или число только один раз в текстовое поле?
Комментарии:
1. вы имеете в виду, что он не должен иметь возможности вводить повторяющиеся символы или цифры?
2. Да @KunalMukherjee
Ответ №1:
Попробуйте получить существующее значение внутри текстового поля с помощью
var value=document.getElementById("#txtPostalCode");
проверьте индекс нового кода символа
var index=value.indexOf(String.fromCharCode(charcode));
if(index="-1")
{
//character not present
}
else
{
//character already present
}
Ответ №2:
Способ, которым я бы это сделал, — создать частотный массив символов, затем проверить, не превышает ли какое-либо значение частоты 1, если да, то верните true, иначе верните false.
Пример:
function checkPostalCode(event, t) {
if (!event.currentTarget.value amp;amp; event.keyCode !== 13) {
alert(`Please enter something!`);
return;
} else {
const input = event.currentTarget.value;
const inputArray = [...input];
// Construct frequency array of the input
const frequencyinputArray = inputArray.reduce((prev, curr) => {
prev[curr] = prev[curr] ? prev[curr] 1 : 1;
return prev;
}, {});
// Check in the frequency array if any count is greater than 1
const doesContainRepeatedCharacters = Object.values(frequencyinputArray).some(x => x > 1);
console.log(doesContainRepeatedCharacters);
return doesContainRepeatedCharacters;
}
}
<input id="txtPostalCode" class="textbox-width form-control" onkeyup="checkPostalCode(event,this)" />