我正在尝试在JQuery中检查某些多个条件,但未返回所需的结果。无论我输入了什么,它总是进入其他条件。
$(function() {
$('#installment').on("keydown keyup", check);
function check() {
var inst = Number($("#installment").val());
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://code.jquery.com/jquery-3.3.1.js"></script>
<tr>
<td>Number of Installment</td>
<td><input type="text" name="installment" id="installment"></td>
</tr>
答案 0 :(得分:1)
问题出在 keydown
更新之前触发的 value
。因此,如果您输入“ 2”。该值将返回''
,而Number('')
是0
,因此它总是转到else
只需删除keydown事件即可,仅使用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
不能修正为您可以使用String.prototype.startsWith()
,1
就永远无效。>
$(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>
答案 1 :(得分:1)
$(function() {
var val = $("#installment").val();
$('#installment').on("keydown keyup",
function () {
var inst = Number($("#installment").val());
if (inst === 2 || inst === 4 || inst === 6 || inst === 12) {
alert("OK");
return false;
} else {
$("#installment").val('');
alert("you can not set wrong value");
//return false;
}
});
});
答案 2 :(得分:0)
问题是您的subset(sample, let %in% names(which(rowSums(table(sample)) >=4)))
事件在修改输入值之前触发。改用keydown
(或更好的keyup
):
input
$(function() {
$('#installment').on("input", check);
function check() {
var inst = parseInt($("#installment").val());
if (inst == 2 || inst == 4 || inst == 6 || inst == 12) {
return true;
} else {
$("#installment").val('');
alert("you can not set wrong value");
return false;
}
}
});
答案 3 :(得分:0)
尝试一下:
$(function() {
$('#installment').on("keydown keyup", check);
function check(event) {
var inst = $(this).val();
if (inst === "") {
return;
}
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://code.jquery.com/jquery-3.3.1.js"></script>
<tr>
<td>Number of Installment</td>
<td><input type="text" name="installment" id="installment"></td>
</tr>
在此代码中,if
开始工作,但仅适用于2
,4
和6
。它不适用于12
,因为第一个输入是1
,您不需要验证,而无需验证keydown和keyup中的输入,一旦用户写完然后验证,就尝试使用blur
随您喜欢。
$(function() {
$('#installment').on("blur", check);
function check(event) {
var inst = Number($(this).val());
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://code.jquery.com/jquery-3.3.1.js"></script>
<tr>
<td>Number of Installment</td>
<td><input type="text" name="installment" id="installment"></td>
</tr>