1

私はWeb開発に不慣れです。単一のphpページでのユーザー入力データの検証について質問があります。

これは私のコードです

<html>
    <head>
        <script lanauge="JavaScript" type="text/javascript">
            function validate_skill_name()
        {
            if (document.worker.skill_name == null 
                    || document.worker.skill_name == "") {
                alert("skill name field is incorrect");
                document.worker.skill_name.focus();
                return false;
            }
            return true;
        }

        function validate_skill_id()
        {
            if (document.worker.worker_id1 == null 
                    || isNaN(document.worker.worker_id1)) {
                alert("skill: worker id 1 field is incorrect");
                document.worker.worker_id1.focus();
                return false;
            }
            return true;
        }

        function validate_time_id()
        {
            if (document.worker.worker_id2 == null 
                    || isNaN(document.worker.worker_id2)) {
                alert("time: worker id 2 field is incorrect");
                document.worker.worker_id2.focus();
                return false;
            }
            return true;
        }
    </script>
</head>
<body>
    <h1> Select Workers </h1>
    <form name="worker" action="" method="post" onsubmit="return(validate_skill_name());">
        Skill Name: <input type="text" name="skill_name"/><br />
        <input type="submit" value="submit me!"/>
    </form>

    <h1> Get Worker Skill </h1>
    <form name="worker" action="" method="post" onsubmit="return(validate_skill_id());">
        ID: <input type="text" name="worker_id1"/> <br />
        <input type="submit" value="submit me!"/>
    </form>

    <h1> Get Worker Available Time </h1>
    <form name="worker" action="" method="post" onsubmit="return(validate_time_id());">
        ID: <input type="text" name="worker_id2"/> <br />
        <input type="submit" value="submit me!"/>
    </form>

    <?php
        require_once "../logic.php";

        if ($_POST) {
            $result = NULL; 
            if (array_key_exists('worker_id2', $_POST)) {
                $result = logic_get_worker_available_time($_POST['worker_id2']);
            } else if (array_key_exists('skill_name', $_POST)) {
                $result = logic_select_has_skill($_POST['skill_name']);
            } else if (array_key_exists('worker_id1', $_POST)) {
                $result = logic_get_worker_skills($_POST['worker_id1']);
            }
            echo htmlspecialchars(print_r($result));
        } 
    ?>

</body>

私の質問は、このコードはユーザー入力データを検証しないということです。何故かはわからない。他のphpページでもまったく同じことをしたのですが、ケースのように複数のフォームではなく1つのフォームしかない点が異なります。

その結果、ユーザー入力は検証されません。$_POSTリクエストは常に私のlogic.phpに送信されます。

誰かが私を助けてくれることを願っています。

4

2 に答える 2

2

ID属性を使用して、ページ上の要素(ケースのフォームなど)を一意に識別する必要があります。

<form id="myFormID">
    <input name="skill_name" type="text" />
</form>

次に、javascriptを介してフォームを参照できます。

document.getElementById("myFormID");
function validate_skill_name()
{
    var formElm = document.getElementById("myFormID");

    if (formElm.skill_name.value == null || formElm.skill_name.value == "") {
        alert("skill name field is incorrect");
        formElm.skill_name.focus();
        return false;
    }
    return true;
}

さらに、さらに良い方法はjQueryを使用することです。

$("#myFormID").submit(function(){
    var inputElmVal = $("input[name=input_field_name]").val();
    if(inputElmVal == '')
    {
        // Do your null validation here ....
    }
});
于 2013-03-17T20:17:34.177 に答える
0

値を使用する必要があります。入力の名前はhtml要素です。

function validate_skill_name() {
    if (document.worker.skill_name.value == null 
        || document.worker.skill_name.value == "") {
        alert("skill name field is incorrect");
        document.worker.skill_name.focus();
        return false;
    }
    return true;
}

http://jsfiddle.net/gcREC/

于 2013-03-17T20:23:22.173 に答える