3

我有一个文本框。我有这个 JS,它不允许用户输入特殊字符或空格。

var reg = /^[0-9a-zA-Z]+$/; 
if(reg.test(DivisionName) == false) {
   alert('Please enter Circle Name without special characters.');
   return false;
}
else{
   window.location.href="addCircles.jsp?DivisionName="+DivisionName+"&cancel=";
} 

现在,我想允许用户输入特殊字符,而不仅仅是空格。例如,

{"堆栈溢出","$$ any"}
被允许。
{" "}
不允许。当我删除条件时,它允许空格。我怎样才能做到这一点?

4

3 回答 3

1

为什么不对输入字符串使用indexOf方法:

function CheckForWhiteSpace(DivisionName) {
  return DivisionName.indexOf(' ') >= 0;
}

或者您可以在简单的正则表达式上使用测试方法:

function RegWhiteSpace(s) {
  return /\s/g.test(s);
}

这还将检查其他空白字符,例如 Tab。

您应该编辑您的问题,因为它没有提供有关您要求的正确信息。

这一切都是为了编写健壮且可维护的代码。如果用户输入仅包含空格

但是,它可能并不适用于所有场景!

$.trim($(DivisionName)) === ""

演示在这里

于 2013-09-03T07:27:15.873 回答
1

也许您可以给我们举个例子,说明哪些输入是有效的,哪些是无效的?这样我们就可以帮助您使用正则表达式。

例如:

var tests = [
'',    // bad
' ',    // bad
' foo', // bad
'foo ', // bad
'foo', // good
'foo bar' // good
]
var regex = /^[0-9a-zA-Z!@#$%^&*]+(\s[0-9a-zA-Z!@#$%^&*]+)*$/
for (var i = 0; i < tests.length; i++){
    console.log('"' + tests[i] + '"=' + regex.test(tests[i]))
}

给出:

""=false
" "=false
" foo"=false
"foo "=false
"foo"=true
"foo bar"=true

这里的例子:jsFiddle

于 2013-09-03T07:43:32.037 回答
0

工作样本

HTML

<input>

Javascript

$("input").on("keydown", function (e) {
    return e.which !== 32;
});

这将允许除空格之外的所有字母、字母、特殊字符。

于 2013-09-03T07:21:25.200 回答