关于检查两个数值是否存在的JavaScript问题

时间:2015-12-04 20:50:21

标签: javascript if-statement

希望我能正确使用这种格式。我知道这是一个新手问题,可能很明显,但我对如何检查这些字段很困惑。我在JSP文件上有两个输入字段:

 <input id="CMDScheduleNumber" type="number" class="textsmall" maxlength="5"
       onKeyPress="return numbersonly(this, event)"/>

 <input id="CMDContractYear" type="number" class="textsmall" maxlength="4"
      onKeyPress="return numbersonly(this, event)"/>

我在一个名为&#34; searchEFT&#34;的脚本中有一个函数。这是检查是否填充了计划编号或合同年份,然后必须填充两者。

      <script type="text/javascript">
          //function for onchange    
          $(document).ready(function () {
               $("#searchEFT").click(function () {

                  var Cmd_Sched_Number = document.getElementById("CMDScheduleNumber");
                  var Cmd_Contract_Year = document.getElementById("CMDContractYear");
                  var Cmd_Status = document.getElementById("CMDSchedStatus");
                  var Cmd_Creation_Date = ocument.getElementById("CMDCreationDate");

                  if (Cmd_Sched_Number == "") {
                      If(Cmd_Contract_Year !== "")
                      alert("Schedule Number and EFT Contract Year must be both populated");
                      return;
                  }
                  else if (Cmd_Sched_Number == "") {
                      alert("Schedule Number and EFT Contract year must be both populated");
                      return;
                  }

当我尝试执行调试器时,如果Cmd_Sched_Number字段的值显示为&#34;&#34;但valueasnumber显示为&#39; NaN&#39;。因此,当我进行检查时,我应该检查它是否是&#34;&#34;或者使用isNaN和/或IsNull将其检查为数字?

感谢您的帮助

3 个答案:

答案 0 :(得分:0)

var Cmd_Sched_Number = document.getElementById("CMDScheduleNumber"); 获取元素。

使用.value从元素中获取value

类似的东西:

var Cmd_Sched_Number = document.getElementById("CMDScheduleNumber").value;

另外,既然你已经有了jQuery,请考虑使用它。 像:

var Cmd_Sched_Number = $("CMDScheduleNumber").val();

答案 1 :(得分:0)

自定义代码验证真的很乱。你可以查看多少条件?有很多开源库,他们做得非常好。

我建议你使用validate.js。它非常简单易用。它在字段上设置规则并根据它们进行验证。

你现在可能需要做更多努力才能转移你的代码,但那将很容易。

答案 2 :(得分:0)

正如Aragorn正确指出的那样,请确保您获取的是值,而不是Jquery对象或DOM元素。

function isPopulated(val) {
   return !(val === '' || isNaN(val));
}

//and then in your click event handler...:

if((isPopulated(Cmd_Sched_Number) || isPopulated(Cmd_Contract_Year)) && !(isPopulated(Cmd_Sched_Number) && isPopulated(Cmd_Contract_Year))) {
  //Handle the case where one is populated and the other isn't, assuming you want to treat any non-numbers as not populated.
}

如果你想要一个公共块用于任何一个已填充的场景而另一个场景没有,它将被评估为异或。

我的isPopulated函数检查空字符串和isNaN的原因是isNaN(&#39;&#39;)将评估为false。

如果您不关心输入的值是否实际为数字,那么您可能需要检查value.length&gt;例如,0。