2010-10-26 84 views
0

我想要验证过程使用Javascript来工作,我的表单有四个单选按钮和一个提交按钮,我想这样做如果用户单击提交并且没有选择单选按钮,它会弹出警告并且不会提交表单。下面是我的形式看起来像:使用Javascript验证表格

<form method="post" name="inform"> 
If you checked off <span style="text-decoration:underline">any</span> problems, how <span style="text-decoration:underline">difficult</span> have these problems made it for you to do your work take care of things at home or get along with other people? 
<table id="lastquestion"> 
<tr> 
<td>Not difficult at all</td> 
<td>Somewhat difficult</td> 
<td>Very difficult</td> 
<td>Extremely Difficult</td> 
</tr><tr> 
<td style="text-align:center"><input type="radio" value="not difficult at all" name="finalquestion" /></td> 
<td style="text-align:center"><input type="radio" value="somewhat difficult" name="finalquestion" /></td> 
<td style="text-align:center"><input type="radio" value="very difficult" name="finalquestion" /></td> 
<td style="text-align:center"><input type="radio" value="extremely difficult" name="finalquestion" /></td> 
</tr> 
</table> 
<input type="hidden" value="<?php echo $totalScore; ?>" name="totalScore" /> 
<input type="submit" value="Submit Final Answer" name="submit" onclick="return validate(inform)" /> 
</form> 

而这里的脚本是什么样子:

function validate(formCheck) 
{ 
    if(formCheck.finalquestion == "") 
    { 
     alert("Please Choose an option"); 
     return false; 
    } 
    else 
    { 
     return true; 
    } 
} 

但由于某些原因,我的按钮提交不管是什么,在这里任何意见将帮助,谢谢!

更新:我试过选择一个收音机,然后在验证函数和formCheck.finalquestion报警打印:[对象NodeList],所以我不认为哪个按钮被选中的值正确地通过。

+1

不是你的问题的一部分,但我会做,无论你在Javascript多少验证这样做,你需要重新做这一切在服务器端的点,因为它是为最终很容易用户可以绕过Javascript验证。 (你可能已经知道了,但总是值得重申) – Spudley 2010-10-26 15:14:58

+0

谢谢你的建议Spudley :) – 2010-10-26 15:16:35

回答

2

你是依靠命名的行为只能在IE的作品:只有浏览器提供一个全局JavaScript变量xyz(或者,更准确地说,window.xyz)与该name每个元素。

要指定表单,请使用提交按钮的form属性。它始终是窗体对象的引用:

return validate(this.form); 

为了得到一个单选按钮的元素,你需要指定value属性。使用

if(formCheck.elements.finalquestion.value == "") 
+0

感谢您的建议Pekka,这在Firefox中工作,但我不得不改变if(formCheck.elements.finalquestion.value ==“”)if(formCheck.elements.finalquestion.value == undefined) – 2010-10-26 15:21:46

+0

@Pete mmmm,或者尝试'if(!formCheck.elements.finalquestion.value)' - 我认为如果它可以工作,将会更可取 – 2010-10-26 15:23:04

+0

我明白了,使用您的建议对所有浏览器都更友善? – 2010-10-26 15:25:58