使用javascript检查表单字段的值

时间:2013-04-23 13:42:48

标签: javascript html web

我想检查表单的值是否为空?在jquery.ketchup.0.3.2之类的许多验证器失败之后,我试图编写自己的验证器(或者我可能失败了) 但我不能让这个功能起作用。

function validate() {
    alert("hmmm");
    var inputs = document.forms["register"].getElementsByTagName("input");
    for (var item in inputs) {
        if(item.value.trim() == "")
            alert("nullField");
    }
}
你能告诉我上述功能有什么问题吗?

4 个答案:

答案 0 :(得分:3)

如果您要使用jQuery,那么使用jQuery

validate(){
  var $inputs = $('input', 'form[name="register"]');
  $inputs.each(function(){
    var val = $.trim(this.value);
    if(!val.length){
       // Not valid
    }
  });
}

答案 1 :(得分:3)

我想知道你使用的是for循环。要循环集合(数组),请使用普通for循环,而不是for in。也许这解决了它:

function validate() {
    alert("hmmm");
    var inputs = document.forms["register"].getElementsByTagName("input");
    for (var i = 0; i < inputs.length; i++) {
        if(inputs[i].value.trim() == "")
            alert("nullField");
    }
}

请注意,.trim()并非在所有浏览器中都可用:http://kangax.github.io/es5-compat-table/#String.prototype.trim

可能更喜欢的jQuery替代方法是使用类似的东西:

$('form[name="register"]').find('input[type="text"]').each(function () {
    var $this = $(this);
    if (!$.trim($this.val())) {
        // Left empty
    }
});

参考文献:

答案 2 :(得分:0)

如果您只想使用javascript:

首先确保定义了修剪功能:

if(!String.prototype.trim) {
  String.prototype.trim = function () {
    return this.replace(/^\s+|\s+$/g,'');
  };
}

现在实际功能:

 function validate() {
    var inputs = document.forms["register"].getElementsByTagName("input");
    for (var i = 0, len = inputs.length; i < len ; i++) {
        if(inputs[ i ].value.trim() == ""){
            // Validation failed
        }
    }
    // Validation successful
}

答案 3 :(得分:-2)

我强烈(我的意思是强烈)建议不要编写自己的验证。然而,您的代码有一些问题。

  1. for..var..in构造遍历对象的所有属性。因此,对象foo = { bar: '0', baz: '1'}将遍历barbaz(属性,而不是值)。如果你想获得你需要通过这样做来表明的价值 for(var i in foo){ console.log(foo[i]);},或在您的示例中:inputs[item].value
  2. getElementsByTagName返回NodeList(请参阅here)。 NodeList在列表中的元素旁边有其他属性。
  3. 如果你正在使用jQuery,那么你只需要$("#register input").val()来获取相关值的数组,你就可以使用$.map函数为每个值做一些事情。