2013-02-24 120 views
1

我在想,是否有一个JavaScript命令(什么是我寻找的东西的专有名称?)我可以在一个表单中选择所有输入框,而不仅仅是一个?Javascript表单验证

E.g:

function checkform(id){ 
var theForm = document.getElementById(id); 
if (theForm.surname.value == '') { 
    alert("you didn't type in your surname"); 
    theForm.surname.focus(); 
    return false; 
} 
else if (theForm.surname.value.length == 0) { 
    alert('You\'ve left some of the fields blank'); 
    theForm.surname.focus(); 
    return false; 
} 
return true; 
} 

我有这样的代码。其目的是检查表单中的每个输入框以查看是否输入了信息,如果没有,则在用户提交表单时会显示警报。

有没有一种方法可以改变这段JavaScript,以便检查每个输入框而不仅仅是姓氏(如示例所示)。

+0

使用jQuery ..... – 2013-02-24 19:41:04

回答

0

方法getElementsByTagName可以给你所有的输入,elements属性将持有窗体中所有控件的NodeList。

var nodeList = theForm.getElementsByTagName('input'); 

var nodeList = theForm.elements; 
+0

很酷,所以他们都做同样的事情? – Joel 2013-02-24 19:53:27

+0

否。前者只会得到输入,不会得到,例如'select'元素。 – Quentin 2013-02-24 20:08:32

0

我认为你需要为这一个document.getElementsByTagName()方法。你可以像这样与您当前的功能链接这件事:

var inputs = document.getElementsByTagName('input'), // get all input tags in the document 
    i = 0, // set counter to zero 
    l = inputs.length; // get number of inputs you have found 
for (i; i < l; i += 1) { // loop through the inputs you have found 
    checkform(inputs[i].id); // send the id of each input to the `checkform` method 
} 

当然,你可能要重写你必须使它更有效率的功能,但你可能会放弃这一直接进入你的代码(checkform外功能),它应该做你想做的。