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

时间:2018-04-10 09:04:48

标签: javascript jquery

我有文本框,我需要以这样的方式进行验证,如果textbox为空,则不应该允许空格。如果文本框中有任何值,则只允许空格。我正在尝试下面的代码,但没有工作

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;
    }
  }
})

5 个答案:

答案 0 :(得分:2)

为什么不修剪?

username.trim()

之后你可以返回匹配的结果。

答案 1 :(得分:2)

如果您使用的是表单,则不需要任何javascript

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

答案 2 :(得分:1)

你的正则表达式似乎错了。 你不允许空格字符。

请尝试使用此代码:/\S/

\S是任何非空格字符。

如果您想以角色开头,它将变为/^\S/

^是您希望以下列字符开头的时间 $是您希望以前一个字符

结束的时间

答案 3 :(得分:1)

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' />

答案 4 :(得分:1)

你可以这样做:

$(function() {
  $('#input1').on('keypress', function(e) {
    if ($(this).val() == "")
      if (e.which == 32)
        return false;
  });
});

<强> Online Demo (jsFiddle)