仅当文本框中有任何现有字符或数字时,才允许在文本框中留出空格



我有文本框,我需要在其中进行验证,如果文本框为空,它不应该允许空格。如果文本框中有任何值,则只有它应该允许空格。我正在尝试下面的代码,但不起作用

var letters = /^[0-9a-zA-Z]+$/;
$("#input1").on("blur ", function() {
  function alphanumeric(username) { 
    if (username.value.match(letters)) {
      return true;
    } else {
      $('#input1').on('keypress', function(e) {
       if (e.which == 32)
         return false;
      });
      return false;
    }
  }
})

如果你使用form,你不需要任何JavaScript


<form action='/'>
  <input pattern="s*S+.*" title="space only is not allowed" required/>
  <input type="submit">
</form>

为什么不直接修剪呢?

username.trim()

之后,您可以返回匹配结果。

blur 事件上添加一个函数,该函数将修剪将删除前后空格的值。如果该值为空,则会导致''

$("#input1").on("blur", function () { 
  if($(this).val().trim() === ''){
    alert('empty value');
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input id='input1' />

你的正则表达式似乎是错误的。您不允许使用空格字符。

试试这个:/S/

S是任何非空格字符。

如果你想从一个角色开始,它会变成/^S/

^是当您要从以下字符
开始时 $是当您想按前一个字符

在线演示 (jsFiddle(

最新更新