Php 如何以更简单的方式检查正确填写的表格?
我有一份问卷,其中一个问题提供了五个答案选项。用户可以勾选三个,并对这三个进行评级。为避免误解,以下是HTML代码:Php 如何以更简单的方式检查正确填写的表格?,php,javascript,Php,Javascript,我有一份问卷,其中一个问题提供了五个答案选项。用户可以勾选三个,并对这三个进行评级。为避免误解,以下是HTML代码: <table> <tr> <td><input type="checkbox" name="option_1"> Option 1 (to be determined)</td> <td> <select name="">
<table>
<tr>
<td><input type="checkbox" name="option_1"> Option 1 (to be determined)</td>
<td>
<select name="">
<option value="">as:</option>
<option value="3">1st</option>
<option value="2">2nd</option>
<option value="1">3rd</option>
</select>
</td>
</tr>
<tr>
<td><input type="checkbox" name="option_2"> Option 2 (to be determined)</td>
<td>
<select name="">
<option value="">as:</option>
<option value="3">1st</option>
<option value="2">2nd</option>
<option value="1">3rd</option>
</select>
</td>
</tr>
<tr>
<td><input type="checkbox" name="option_3"> Option 3 (to be determined)</td>
<td>
<select name="">
<option value="">as:</option>
<option value="3">1st</option>
<option value="2">2nd</option>
<option value="1">3rd</option>
</select>
</td>
</tr>
<tr>
<td><input type="checkbox" name="option_4"> Option 4 (to be determined)</td>
<td>
<select name="">
<option value="">as:</option>
<option value="3">1st</option>
<option value="2">2nd</option>
<option value="1">3rd</option>
</select>
</td>
</tr>
<tr>
<td><input type="checkbox" name="option_5"> Option 5 (to be determined)</td>
<td>
<select name="">
<option value="">as:</option>
<option value="3">1st</option>
<option value="2">2nd</option>
<option value="1">3rd</option>
</select>
</td>
</tr>
</table>
但这将产生一个庞大的脚本。有没有更简单的方法?它可能是javascript或PHP。最好是后者,但我对PHP不太精通,所以我需要一个非常好用的脚本
非常感谢 在这个例子中,您不需要PHP(尽管您应该包括像PHP这样的服务器端验证,因为无法保证验证JS确实在客户端浏览器上运行。可能是因为恶意用户,也可能只是因为没有启用JS) 如果添加一些逻辑,可以缩短JS。重复你的每一个问题。在每个问题中,计算每个选中的复选框,完成后查看哪些复选框的选中数超过3
var questions = document.getElementsByClassName('question'), numberChecked, answers;
for(var q = 0, qlen = questions.length; q < qlen; q++) {
numberChecked = 0;
answers = questions[q].getElementsByTagName('input');
for(var a = 0, alen = answers.length; a < alen; a++) {
if(answers[a].type == 'checkbox' && answers[a].checked) {
numberChecked++;
}
}
if(numberChecked > 3) {
alert('You may only check 3 choices for question #' + (q + 1));
}
}
var questions=document.getElementsByClassName('question'),numberChecked,answers;
for(var q=0,qlen=questions.length;q3){
提醒('您只能为问题#'+(q+1)检查3个选项);
}
}
创建了一个使用纯javascript进行验证的方法:
function innerValidate(){
var inputs = document.form1.getElementsByTagName("input");
var ddls = document.form1.getElementsByTagName("select");
var checkedCount = 0, ddl, opsSelected = [], isValid = false;
for(var i=0; i<inputs.length; i++)
{
if(inputs[i].type == 'checkbox' && inputs[i].checked == true)
{
if(++checkedCount >3){
isValid = false;
return isValid;
}
for(var j=0; j<ddls.length; j++)
{
if(ddls[j].name == inputs[i].name)
{
ddl = ddls[j];
break;
}
}
if(ddl.value && opsSelected.indexOf(ddl.value) == -1)
{
opsSelected.push(ddl.value);
}
else
{
isValid = false;
return isValid;
}
}
}
if(checkedCount == 3)
{
isValid = true;
}
return isValid;
}
函数innerValidate(){
var inputs=document.form1.getElementsByTagName(“输入”);
var ddls=document.form1.getElementsByTagName(“选择”);
var checkedCount=0,ddl,opsSelected=[],isValid=false;
对于(var i=0;i3){
isValid=false;
返回有效;
}
for(var j=0;jJavascript和PHP在两个不同的时间执行。为了便于用户验证,您需要两者的混合。如果您不想在加载新页面时给用户带来不便,服务器端的PHP是必须的,JS是可选的。这就是我需要的!非常感谢!:-)比我的答案好得多:)
function innerValidate(){
var inputs = document.form1.getElementsByTagName("input");
var ddls = document.form1.getElementsByTagName("select");
var checkedCount = 0, ddl, opsSelected = [], isValid = false;
for(var i=0; i<inputs.length; i++)
{
if(inputs[i].type == 'checkbox' && inputs[i].checked == true)
{
if(++checkedCount >3){
isValid = false;
return isValid;
}
for(var j=0; j<ddls.length; j++)
{
if(ddls[j].name == inputs[i].name)
{
ddl = ddls[j];
break;
}
}
if(ddl.value && opsSelected.indexOf(ddl.value) == -1)
{
opsSelected.push(ddl.value);
}
else
{
isValid = false;
return isValid;
}
}
}
if(checkedCount == 3)
{
isValid = true;
}
return isValid;
}