Javascript无法按预期呈现功能

时间:2015-03-06 08:00:56

标签: javascript jquery html

好的,我有这个观点

<input type="input" class="form-control mortgage-refinance-only" id="mortgage-cash-out-tenure" placeholder="">
      <span class=" cash-out-tenure-error hidden" style="color:red; font-size: 10px">Value can be 'NA' or greater than 1</span>

我有这个javascript函数

$('#mortgage-cash-out-tenure').change(function(){
    var cashOutTenure = $('#mortgage-cash-out-tenure').val();

    if(cashOutTenure != 'NA' || cashOutTenure < 1){
        $('.cash-out-tenure-error').removeClass("hidden");
    else {
        $('.cash-out-tenure-error').addClass("hidden");
    }
  }); 

好吧,基本上,如果输入标签的值不是'NA'或者它小于1,它应该使得跨度可见,并显示错误消息,否则它不会显示错误消息。

但它似乎没有正常工作。如果它不等于'NA',则错误被正确编码,但如果该值是数字,则仍然显示错误消息。

代码有什么问题? 任何帮助都非常感谢。

由于

1 个答案:

答案 0 :(得分:3)

代码中存在语法错误。此外,您的if声明与您的文字说明不符。

根据您所需的功能,if语句应为:

if (cashOutTenure == 'NA' || cashOutTenure >= 1) {
    $('.cash-out-tenure-error').addClass('hidden');
} else {
    $('.cash-out-tenure-error').removeClass('hidden');
}

当你否定OR或AND表达式中的子句时,你需要注意比较运算符以及将OR更改为AND(反之亦然)。

您的原始代码:if(cashOutTenure != 'NA' || cashOutTenure < 1)只要true的值不是cashOutTenure,就会传播到'NA',其中包含所有数值。

另一件事:您的错误消息与您对所需效果的描述不符。此错误消息:

值可以是'NA'或大于1

...表示不允许使用1的值。但是您的描述表明小于1 的任何内容都是错误的。在编写代码(或错误消息) ...

之前,请仔细考虑这些要求