Проблема в keydown
, запущенном перед value
обновлением .Так что, если вы введете «2».Значение вернет ''
И Number('')
равно 0
, поэтому оно всегда будет равно else
Просто удалите событие нажатия клавиш, используя только keyup
$(function() {
$('#installment').on("keyup", check);
function check() {
var inst = Number($("#installment").val());
console.log(inst)
if (inst === 2 || inst === 4 || inst === 6 || inst === 12) {
return true;
} else {
$("#installment").val('');
alert("you can not set wrong value");
return false;
}
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<tr>
<td>Number of Installment</td>
<td><input type="text" name="installment" id="installment"></td>
</tr>
Поскольку @ Radu Diță упоминается в комментарии, что 12
никогда не может быть действительным, если 1
не так, чтобы исправить этоВы можете использовать String.prototype.startsWith()
$(function() {
$('#installment').on("keyup", check);
function check() {
var inst = Number($("#installment").val());
console.log(inst)
if (inst === 2 || inst === 4 || inst === 6 || '12'.startsWith(String(inst))) {
return true;
} else {
$("#installment").val('');
alert("you can not set wrong value");
return false;
}
}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<tr>
<td>Number of Installment</td>
<td><input type="text" name="installment" id="installment"></td>
</tr>