如何使用JavaScript(或JQuery)检查输入是空的还是具有某个字符串?

时间:2015-11-19 11:29:10

标签: javascript jquery regex validation

我正在计算机表格上进行一些验证我正在建设,我想要一个节目'请填写此字段'如果用户没有在输入中输入数字,则显示消息。

默认情况下,该字段有一个' 0'在里面。

所以我想检查字段是否为空或字符串是否为' 0'。

还应该提到运行的脚本可以防止用户输入非数字字符。

这是if / else语句中的一系列检查的一部分。对于这种情况,我已经有一个条件(拿起用户做出的先前选择)。

所以我有类似的东西:

if ( calcChoice == 1 && $( "#input-loan" ).val() == "0" ) {
    console.log("User input missing"); 
    $( "#input_loan" ).addClass( "error" );
} else if ( calcChoice == 1 && $( "#input-pay" ).val() == "" ) {
    console.log("User input missing"); 
    $( "#input_loan" ).addClass( "error" );
} else if ( calcChoice == 2 && $( "#input-loan" ).val() == "0" ) {
    console.log("User input missing"); 
    $( "#input_loan" ).addClass( "error" );
} else if ( calcChoice == 2 && $( "#input-pay" ).val() == "" ) {
    console.log("User input missing"); 
    $( "#input_loan" ).addClass( "error" );

我想简化这一点。我真正喜欢的是:

if ( calcChoice == 1 && $( "#input-loan" ).val() == "" || "0"; ) {
    //do something;
} 

有什么想法吗?

我已经查看了以下相关问题但未能通过答案解决问题:

How do you check for an empty string in JavaScript?

JavaScript: Simple way to check if variable is equal to two or more values?

6 个答案:

答案 0 :(得分:2)

var goodValues = ["","0"];
if( goodValues.indexOf( $( "#input-loan" ).val() ) !== -1 ) {
    //good
}

答案 1 :(得分:1)

你可以写

if($( "#input-loan" ).val() + 0 == 0)
{
    // do smth.
}

不确定这种方法是否合适但是对我有用

答案 2 :(得分:0)

if(calcChoice == 1&&($(“#input-loan”)。val()==“”|| $(“#input-loan”)。val()==“0 “)){     //做一点事; }

尝试这似乎是错误的。同样,您也可以使用 $ .isEmptyObject(object)确保值是否为空。

答案 3 :(得分:0)

解决方案可以基于以下内容。

  var loanInput =  $( "#input-loan" );
  var payInput = $( "#input-pay" );
  var loanValue = +loanInput.val(); //+ converts string to number
  var payValue =  +payInput.val();


  if (!loanValue) { 
    loanInput.addClass( "error" );
  }

  if (!payValue) {
    payInput.addClass( "error" );
  }

顺便说一句,请注意,而不是默认值为" 0"在输入中,您可以将输入的placeholder属性设置为0。

<input type="text" placeholder="0" />

这样你就不需要检查输入是否为&#34; 0&#34;,你实际上可以治疗&#34; 0&#34;如果需要,作为有效输入。

答案 4 :(得分:0)

感谢您回答所有人。这里真的很好的解决方案。现在似乎很明显有一个'0'占位符,只测试为空。此外,akmed0zmey的解决方案非常巧妙。

我忘了提及没有必要修剪,因为我有一个脚本运行,阻止用户输入非数字字符,包括空格。我已将原始问题更新为包含此内容。

我选择了RicardoC的解决方案,因为它最贴切地回答了我提出的具体问题,这是保留未来的好方法 - 我可以有一系列字符串来测试。

谢谢!

答案 5 :(得分:0)

为了记录,这个正则表达式测试也有效。它正在测试一个空字符串或字符串&#39; 0&#39;:

 if ( calcChoice == 1 && /^(|0)$/.test( $( "#input_loan" ).val() ) ) {
        //do something
 } else if ( calcChoice == 2 && /^(|0)$/.test( $( "#input_pay" ).val() ) ) {
        // do something
 }

之前我曾试过这个,但我的代码中的其他地方肯定存在问题。现在它有效。 (在对问题的评论中向Nils欢呼,指出这有效)。