Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/458.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何以更简单的方式检查正确填写的表格?_Php_Javascript - Fatal编程技术网

Php 如何以更简单的方式检查正确填写的表格?

Php 如何以更简单的方式检查正确填写的表格?,php,javascript,Php,Javascript,我有一份问卷,其中一个问题提供了五个答案选项。用户可以勾选三个,并对这三个进行评级。为避免误解,以下是HTML代码: <table> <tr> <td><input type="checkbox" name="option_1"> Option 1 (to be determined)</td> <td> <select name="">

我有一份问卷,其中一个问题提供了五个答案选项。用户可以勾选三个,并对这三个进行评级。为避免误解,以下是HTML代码:

<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;
}