使用javascript验证空白

使用javascript验证空白,javascript,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

我有以下脚本

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

演示

document.getElementById('url')。onkeypress=函数(e){
var val=this.value.split('\n');
var validateError=document.getElementById('errorvalidate');
var i;
如果(e.which==13){
对于(i=0;i
我所做的:

更改
/\S/.test
/\S/.test

在新行字符上拆分val,并根据正则表达式对每行进行求值(虽然也可以使用一个多行正则表达式,如F.J尝试这样做,但他的答案对我不起作用)

document.getElementById('url')。onkeypress=function(e){
var val=this.value.split('\n');
var validateError=document.getElementById('errorvalidate');
var i;
如果(e.which==13){
对于(i=0;i
我所做的:

更改
/\S/.test
/\S/.test


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

尝试更改
/\S/.test(val)
/^\S*$/m.test(val)

例如:


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

尝试更改
/\S/.test(val)
/^\S*$/m.test(val)

例如:

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

试试看,应该可以很好地工作

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
}
试试这个,它应该足够好用了

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
}

但从第二排开始,第一排就没有得到验证。你说得对,我没有完全理解你的问题。我改变了答案。但从第二排开始,第一排的答案就不再有效了。你是对的,我没有完全理解你的问题。我更改了答案。这允许只包含空格的行。@F.J您可以这样做
&&oldkey!=32
但这意味着不允许在“domain.com”中键入内容,而对于这个用例(域名不应该有空格)来说这是可以的,但您的解决方案要简单得多。这允许只包含空格的行。@F.J您可以这样做
和&oldkey!=32
但这意味着不允许在“domain.com”中键入内容,尽管这种用例(域名不应该有空格)没有问题,但您的解决方案远没有那么粗糙和干净。
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 = '';
    }
}
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
}