使用 javascript 验证空格



我有以下脚本

document.getElementById('url').onkeypress = function (e) {
  var val = this.value;
  var validaterror = document.getElementById('errorvalidate');
  if (e.which == 13) {
    if (!/S/.test(val)) {
        validaterror.innerHTML = 'Please enter domain names in the field.';
        return false;
      }
    validaterror.innerHTML = '';
  }
}

.HTML

<textarea id="url"></textarea>

当我没有输入任何值时,它会起作用并回显我一条消息,但是如果我输入一个值,然后再次按 Enter 转到下一行并在第二行上留出空间,它将不再验证。示例:我输入值 123,在我按 Enter 转到下一行后,如果我没有在下一行输入任何值并按回车键,我应该会收到消息"请输入域名,但没有发生。当我错了时,请纠正我。我假设我在这里有些错误:

if (e.which == 13) {
  if (!/S/.test(val)) {

演示 http://jsfiddle.net/zBkXw/6/

尝试将!/S/.test(val)更改为 /^s*$/m.test(val)

示例:http://jsfiddle.net/pQ9wP/

说明:/^s*$/m是一个正则表达式,如果字符串中任何位置的行仅包含空格,则该表达式将匹配。 m(多行)标志使^在字符串开头或换行符之后匹配,$标志将在字符串末尾或换行符之前匹配。

试试这个 http://jsfiddle.net/zBkXw/7/它应该工作得很好。

var oldkey = null;    
document.getElementById('url').onkeypress = function (e) {
  var val = this.value;
  var validaterror = document.getElementById('errorvalidate');
  if (e.which == 13) {
    if (!/S/.test(val) || oldkey == e.which) {
        validaterror.innerHTML = 'Please enter domain names in the field.';
        return false;
      }
    validaterror.innerHTML = '';
  }
  oldkey = e.which
}
document.getElementById('url').onkeypress = function (e) {
    var val = this.value.split('n');
    var validaterror = document.getElementById('errorvalidate');
    var i;
    if (e.which == 13) {
        for (i = 0 ; i < val.length ; i++) {
            if (/s/.test(val[i])) {
                validaterror.innerHTML = 'Please enter domain names in the field.';
                return false;
            }
        }
        validaterror.innerHTML = '';
    }
}

我做了什么:

!/S/.test更改为/s/.test

在新行字符上拆分 val 并根据正则表达式评估每一行(尽管也可以像 F.J 尝试的那样使用单个多行正则表达式来做到这一点,但他的答案对我不起作用)

最新更新