这种表单验证有什么问题?

时间:2011-03-03 06:03:59

标签: javascript

基本上,我想要做的是在我的表单中的七个文本框之一为空时提醒相同的消息。我一直在玩它很多,但现在我开始感到恼怒;救命!有时我得到一个函数validepiste()没有定义错误,有时我没有得到错误,但即使所有的框都有内容,也会有警报。我认为错误可能是由于错误地使用了|| (或)运算符,或长度位。这是函数(在head标签内):

<script type="text/javascript">
function validatepiste()
{
// all form fields must be filled in
var a= document.piste.nom.length;
var b= document.piste.email.length;
var c= document.piste.numtel.length;
var d= document.piste.adresse.length;
var e= document.piste.ville.length;
var f= document.piste.length;
var g= document.piste.travaux.length;
if (a||b||c||d||e||f||g==0){
  alert("Vous devez remplir toutes les cases.");
  return false;
  }
return true
} 
</script>

调用html中的那个函数:

<input type="submit" name="Submit" value="Envoyer" onClick="return validatepiste()"/>

谢谢!

6 个答案:

答案 0 :(得分:2)

我可以看到您的代码存在两个问题。

第一个问题

您似乎正在尝试直接在表单元素(不存在)上访问length属性。您真正想要做的是访问表单值的length。所以不要这样:

var a= document.piste.nom.length;

这样做:

var a= document.piste.nom.value.length;

起初我没有看到这个,但@Napster在他的回答中提到了这一点。谢谢他。

第二个问题

你是if语句有一些错误的逻辑。请尝试以下方法。

if (a==0||b==0||c==0||d==0||e==0||f==0||g==0) { ... }

你的原始表达是问以下......

如果a真实, 或b是真实的, 或c是真实的, 或d是真实的, 或e是真实的, 或f是真实的, 或g等于0 然后显示警报。

除了g之外,所有字段都是空白的,唯一不会使用现有代码触发警报的情况。

如果您愿意,可以阅读article about what truthy means

答案 1 :(得分:1)

您应该独立测试每个变量的值,即:

if (a==0||b==0||c==0||e==0||f==0||g==0)

答案 2 :(得分:1)

你的代码很好。只需要在定义变量的位置之间添加一个东西。

您的代码:

var a= document.piste.nom.length;
var b= document.piste.email.length;
var c= document.piste.numtel.length;

通过

修改它
var a= document.piste.nom.value.length;
var b= document.piste.email.value.length;
var c= document.piste.numtel.value.length;

对于所有变量都相同,在它们之间增加值。你的代码将运行。

答案 3 :(得分:0)

首先你没有使用你的||操作员正确。它只是比较g == 0。你总是得到一条消息,因为浏览器会将(a)视为具有某种价值。因此对每个变量进行不同的比较,例如

if (a==0||b==0||c==0||d==0||e==0||f==0||g==0){

和第二个使用else条件返回true。它总是返回true,因为它没有其他条件。 return true总是执行。并在

return true;

之后加上分号

答案 4 :(得分:0)

如果你给出

,我认为这就足够了
onsubmit="validatepiste()"

不需要返回。

答案 5 :(得分:-2)

首先尝试:

if (a||b||c||d||e||f||g==0){
  alert("Vous devez remplir toutes les cases.");
  return false;
  }
else{
  return true;
}

其次尝试

<input type="submit" name="Submit" 
value="Envoyer" onclick="validatepiste()"/>

第三

var a= document.getElementByID('nom').length;

假设您的表单字段具有ID和名称