2009-09-30 121 views

回答

1

这应做到:

document.getElementById('myForm').onsubmit = function() { 
    var elems = document.getElementsByClassName('req'); 
    for(var i = 0; i < elems.length; i++) { 
     if(elems[i].value.length == 0) { 
      return false; 
     } 
    } 
} 

这将附加功能,以您的表单提交事件。如果其中任何元素为空,该函数将立即返回false,从而阻止提交表单。

如果你不想被计空格只值填充,你可以用这个代替,如果条件在上面做:

if(elems[i].value.replace(/^\s+|\s+$/g,"").length == 0) { 
    ... 
+0

如果任何隐藏的或其他非必需的输入有一个空值,这将失败。 – 2009-09-30 16:18:02

+1

@mikesamuel - 我看不出如何。投票是否真的有必要? – karim79 2009-09-30 16:25:41

+0

我同意,karim,这应该是因为你只有'req'字段,对吧? – Zlatko 2012-01-13 12:25:49

0

添加一个“的onsubmit”事件处理表单会让你在需要时采取行动。

<form onsubmit="checkMyForm(this)"> 
    ... 
    </form> 

然后,你可以定义一个处理程序

<script> 
    function checkMyForm(myForm) { 
    for (var i = 0; i < myForm.elements.length; ++i) { 
     var input = myForm.elements[i]; 
     if (/\breq\b/.test(input.className) && !input.value) { 
     // Has an empty required input 
     alert('Please enter all required inputs'); 
     input.focus(); 
     return false; // abort form submission 
     } 
    } 
    } 
    </script> 
+0

onsubmit =“checkMyForm(this)”= intrusive javascript = yuck。 – karim79 2009-09-30 16:28:02

+0

看起来不错,但我不明白,如果(/ \ breq \ b/.test(... line,你能告诉我发生了什么? – BigOmega 2009-09-30 17:51:58