使具有所有空格值的文本框无效

Make Textbox with Value of All Spaces Invalid

我有这些脚本...

 Name: <input type="text" id="inputName" onblur="verifyName(this.value)">

 <script type="text/javascript">
    function verifyName(nameInput)
    {
       if(nameInput=="")
       {
          // error
          alert('please enter your name');
       }
       else
       {
          // accepted
       }
    }
 </script>

如果用户不想在文本框中输入 his/her 名称,这将显示错误。

如果用户懒惰,he/she 会输入“ ”(一个 space 或更多)作为名称怎么办?这可以被JavaScript接受。在 if 条件下它将 return 为假。

但我希望用户不要只输入 spaces。有什么办法吗?

注意:任意输入space个数(不含任何字母)均无效


如果用户输入以下文本之一,JavaScript 应该 accepts/rejects 输入如下...

"John" --> valid
"" --> invalid
"John Doe" --> valid
"    " --> invalid
"John     Doe" --> valid (can be edited to remove too many spaces)
"      Kim" --> valid (can be edited to remove too many spaces)
" " --> invalid

Trim 检查前的字符串。见下文

if(nameInput.trim()=="")
{
     // error
     alert('please enter your name');
}
else
{
 // accepted
}

您的函数的一个(相当多的)可能实现使用正则表达式:

function verifyName(nameInput) {
    return input.match(/\w{1,12}/) === null ? false : true;
    //                       ^^
    //    Or some other sensible limitation to the length of a name. 
}
function verifyName(nameInput)
{
   nameInput = nameInput.trim();
   if(nameInput=="")
   {
      // error
      alert('please enter your name');
   }
   else
   {
      // accepted
   }
}

trim() 函数将删除所有空格。如果 var 中只有空格,trim() 和 return "".

您可以使用正则表达式替换字符串中的所有空格,然后检查其长度。如果在删除所有空格后至少还剩下一个字符 - 这是您的有效情况,对吗?

testInput = function(){

  var inpStr = $('#txtInp').val();
  
  
var teststr = inpStr.replace(/\s/g, "");
 
  //$('#testStrDiv').text(teststr);
  
  if((teststr.length)&&(teststr.length>0))
    {
      $('#divOutp').html('<b>Valid! </b>');
      }
  else{
        $('#divOutp').html('<b>Invalid! </b>');
      }
  
  }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id="txtInp" />

<input type="button" onclick="testInput()" value="test" />
<div id="testStrDiv" />
<div id="divOutp" />