Javascript 无法在JQuery中检查多个if-else条件
我试图在JQuery中检查一些多个条件,但它没有返回所需的结果。无论我输入什么,它总是转到其他条件Javascript 无法在JQuery中检查多个if-else条件,javascript,jquery,html,if-statement,Javascript,Jquery,Html,If Statement,我试图在JQuery中检查一些多个条件,但它没有返回所需的结果。无论我输入什么,它总是转到其他条件 $(函数(){ 美元(“#分期付款”)。在(“按键向下键向上”,勾选); 函数检查(){ var inst=编号($(“#分期付款”).val(); 如果(inst==2 | | inst==4 | | inst==6 | | inst==12){ 返回true; }否则{ 美元(“#分期付款”).val(“”); 警报(“您不能设置错误的值”); 返回false; } } }); 分期付款数
$(函数(){
美元(“#分期付款”)。在(“按键向下键向上”,勾选);
函数检查(){
var inst=编号($(“#分期付款”).val();
如果(inst==2 | | inst==4 | | inst==6 | | inst==12){
返回true;
}否则{
美元(“#分期付款”).val(“”);
警报(“您不能设置错误的值”);
返回false;
}
}
});代码>
分期付款数
问题出在值
更新之前触发的向下键中。所以如果你输入'2'。该值将返回'
,编号('')
为0
,因此它总是转到else
只需删除keydown事件即可使用keydup
$(函数(){
美元(“#分期付款”)。在(“键控”,勾选);
函数检查(){
var inst=编号($(“#分期付款”).val();
控制台日志(inst)
如果(inst==2 | | inst==4 | | inst==6 | | inst==12){
返回true;
}否则{
美元(“#分期付款”).val(“”);
警报(“您不能设置错误的值”);
返回false;
}
}
});代码>
分期付款数
问题是在修改输入值之前触发键下事件。使用keyup
(或者更好的方法是使用input
):
$(函数(){
美元(“#分期付款”)。在(“输入”,勾选);
函数检查(){
var inst=parseInt($(“#分期付款”).val();
如果(inst==2 | | inst==4 | | inst==6 | | inst==12){
返回true;
}否则{
美元(“#分期付款”).val(“”);
警报(“您不能设置错误的值”);
返回false;
}
}
});代码>
分期付款数
试试这个:
$(函数(){
美元(“#分期付款”)。在(“按键向下键向上”,勾选);
功能检查(事件){
var inst=$(this.val();
如果(inst==“”){
返回;
}
如果(inst==2 | | inst==4 | | inst==6 | | inst==12){
返回true;
}否则{
美元(“#分期付款”).val(“”);
警报(“您不能设置错误的值”);
返回false;
}
}
});代码>
分期付款数
你到底期望什么而没有发生?如果输入12不起作用,那是因为当输入数字1时,你清除了输入。使用这种方法,您只能验证1个字符输入,或者在添加整个前缀的位置验证输入。另一个注意事项是,val返回一个字符串,您正在进行严格检查。@RaduDițăval返回一个字符串”-这就是为什么它周围有Number()
it@freedomn-m My bad,missed that或使用input
事件同时拾取其他输入方法(而不是此处详述的keydown
)向上键无法解决整个问题。12将永远不会被验证,因为1无效。@Radu DițăI已尝试解决该问题。请看编辑。感谢您指出,如果不对其工作方式进行重大更改,您可以做的事情就不多了,但OP需要注意,需要进行二次验证,以确保1不会在过程中传递(但无论如何都应该这样做,因为javascript不应该是唯一的验证,它只是一个UI nicity/first catch)但如果12
应被允许作为有效答案,则为必填项@freedomn-m.OK,然后@freedomn-m我将删除该选项。TBH,在这种情况下,我不确定OPs限制代码还能做些什么(因此我删除了以前的注释)-需要进行二次验证,以确保1不会在过程中传递(但无论如何都应该这样做,因为javascript不应该是唯一的验证,它只是一个UI精确性/第一捕获)
$(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;
}
});
});