Javascript 无法在JQuery中检查多个if-else条件

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; } } }); 分期付款数

我试图在JQuery中检查一些多个条件,但它没有返回所需的结果。无论我输入什么,它总是转到其他条件

$(函数(){
美元(“#分期付款”)。在(“按键向下键向上”,勾选);
函数检查(){
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;
    }
  });
});