仅在用户键入字母时才禁止空格或显示警报

时间:2014-12-05 05:48:21

标签: javascript jquery regex whitespace removing-whitespace

用户应该在textarea中输入一些信息(在我的情况下是p标签内),主要是字符串。但是,我想阻止用户只输入空格[连续多个空格],我将提醒他要求输入有意义的内容。我如何检查这种情况? "if there are no normal alphabets; then alert blahblah"是一个有效的逻辑吗?我该如何编码呢?

到目前为止的代码

$("#saveText").click(function() {
  var grabbed = $(".froala-element p").text();
  if (grabbed === "") {
    alert("No cheating :) Please type something.");
  } else {
    alert(grabbed);
  }
});  

这就是我到目前为止所做的一切。欢迎使用jQuery解决方案。

3 个答案:

答案 0 :(得分:3)

你可以test针对只代表空格(/^\s*$/)的正则表达式:

$("#saveText").click(function() {
  var grabbed = $(".froala-element p").text();

  if (/^\s*$/.test(grabbed)) {
    alert("No cheating :) Please type something.");
  } else {
    alert(grabbed);
  }
});

这会处理常规空格,制表符,换行符等,以及没有输入的情况。

正则表达式本身分解如下:

^    Beginning of the string
\s   Any whitespace character
*    Zero or more occurrences of previous
$    End of the string

您也可以使用/\S/来转动测试并检查是否存在至少一个非空白字符,这可能会稍微提高效率。

答案 1 :(得分:0)

如果文字在'p'标签中,您的代码就可以了,如果是textarea,则应该是:

var grabbed = $(".froala-element textarea").val();

答案 2 :(得分:0)

尽量倾听'模糊'并且'粘贴'确保用户无法输入空白字符的事件,如下所示: -

http://jsfiddle.net/chetanbh/024jvy5h/

$('#type_something').on('paste', function(event){
var element = this;
setTimeout(function () {
    var text = $(element).val();
    if(text.trim().length <= 0) {
        alert('Sorry, paste something else, not empty string');
        $(element).val('');
    }
}, 100);

});

$('#type_something').on('blur', function(event){
var element = this;
var text = $(element).val();
if(text.trim().length <= 0) {
    alert('Sorry, type something else, not blank characters');
    $(element).val('');
}

});