如何验证文本框以防止传递空值?

时间:2016-10-22 10:36:59

标签: jquery

我有两个输入字段显示如下,如果有任何空字段,我想在点击按钮时输出警告。

HTML:

<input placeholder="Day" id="day" type="number" name="day">      
<input placeholder="Year" id="year" type="number" name="year">
<button type="button">Click Me!</button> 

jQuery的:

$(document).ready(function(){
   var currentYear = (new Date).getFullYear();
   $('button').click(function(){

     day = $("#day").val();
     month = $("select option:selected").val()
     year = $("#year").val(); 
     pdate = currentYear - year ;

     if( day === "" && year === ""  ){

        alert("the fields are empty");
     }
     else{
       alert("Congratulations");
     }
   });    
});

目前,当我点击一个按钮时,即使其中一个字段为空,else语句也能正常工作。

3 个答案:

答案 0 :(得分:4)

使用var声明变量,并将&&(and)both condition are satisfied替换为||(or)Either one condition satisfied

更好地使用!,它会检查所有条件是null,empty

年度验证已更新

$(document).ready(function(){
       var currentYear = (new Date).getFullYear();
       $('button').click(function(){
            
        var day = $("#day").val();
         var month = $("select option:selected").val()
         var year = $("#year").val(); 
         var pdate = currentYear - year ;
         
         if((!day )||(!year)){
          
            alert("the fields are empty");
         }
           //updated
         else if((day < 0)|| (year <1920))
         
         {alert('not allow date below 0 & year below 1920');}
         else{
           alert("Congratulations");
         }
         });    
    });
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input placeholder="Day" id="day" type="number" name="day">      
    <input placeholder="Year" id="year" type="number" name="year">
    <button type="button">Click Me!</button>

答案 1 :(得分:1)

您需要使用OR(||)运算符而不是AND(&&)来检查值;因为它正在检查是否两个值都是空字符串(如果只有一个的字符串为空将会失败),而你似乎想要检查 值是否为空字符串,即:

if ( day === "" || year === ""  )

然而,值得指出的是,您的检查将无法捕获多个空格的字符串,因此您可能需要重新编写条件以从值中首先修剪空白区域:

if (day.trim() === "" || year.trim() === "")

String.prototype.trim()从字符串中删除前导和尾随空格。

顺便提一下,你的变量声明似乎都缺失了,所以除非你在这个已发布的片段范围内的其他地方声明它们,否则它们将是全局变量,这通常是一个不需要的问题(并且容易在代码中的其他地方意外更改) );为了解决这个问题,您应该使用varlet(或const来声明它们,但我不确定是否需要它们保持不变)将它们本地化为本地范围

参考文献:

答案 2 :(得分:0)

尝试使用此代码。使用jquery trim方法来转义空格(如果用户只输入空格)。

var currentYear = (new Date).getFullYear();
$(document).on('click','button',function(){

 day = $("#day").val();
 month = $("select option:selected").val()
 year = $("#year").val(); 
 pdate = currentYear - year ;

 if( $.trim(day) != "" && $.trim(year) != ""){
     alert("Congratulations");
 }
 else{
   alert("the fields are empty");
 }
});