Javascript表单验证 - 大于0的多个表单字段

时间:2011-02-21 07:22:18

标签: javascript validation

function negativeValues(){
    var myTextField = document.getElementById('digit');

    if(myTextField.value < 0)
{
  alert("Unable to submit as one field has a negative value");
  return false;
  }
}

上面是一段Javascript代码,每次字段ID“digit”的值小于0时,提交按钮上的提示或onclick都会出现一个警告框。

表单中有大约50个字段应该被视为“数字”字段,它们不应该小于0.我应该使用此Javascript更改什么以确保所有“数字”字段都有此警告框弹出?

我不能使用jquery / mootools进行验证 - 它必须是平的Javascript。

感谢。

2 个答案:

答案 0 :(得分:0)

var form = document.forms[0]; // first form in the document
form.onsubmit = function () {
  for (var i=0; i<this.elements.length; i++)
    if (Number(this.elements[i].value) < 0) {
      alert("Unable to submit as one field has a negative value"); // complain
      return false;  // and prevent submission
    }
}

答案 1 :(得分:0)

不要给ID =“数字”,ids需要是唯一的。而是给出 =“digit”或name =“digit []”,它在PHP中将为您提供服务器上的数组。

以下是使用表单访问的典型验证

function validate(theForm) {
  var el = theForm.elements;
  for (var i=0,n=el.length;i<n;i++) {
    if (el[i].className=="digit" && parseInt(el[i].value,10)<0) {
      alert('This field must contain a value > 0');
      el[i].focus();
      return false;
    }
  }
  return true; // allow submission
}

假设

<form onsubmit="return validate(this)">

className ==的替代品将是

if (el[i].className.indexOf('digit')!=-1 

如果可以从其他地方操纵className。

您可以使用ID =“digit1”ID =“digit2”和

if (el[i].id.indexOf('digit')==0