0

表示されたアイテムのリストからアイテムが選択されていない場合にエラーを生成するために、コードにいくつかの検証を適用しようとしています (txt ファイルから取得されます) 訪問者名が入力されていない場合に検証を設定しましたチェックボックスは変数である<input type='checkbox' name='$partno'>ため、検証を設定するのが非常に難しくなっています。これを実装する方法についてのアイデアをいただければ幸いです。

 <script>
        function validateName()
        {
            var x=document.forms["purchase"]["visitor"].value;
            if (x==null || x=="")
            {
                alert("Visitor name must be entered");
                return false;
            }
        }
    </script>
</head>

<body>

    <h1>Items Available</h1>

    <form name="purchase" action="confirm.php" method="post" onsubmit="return validateName()">
        <table>

            <h3>Visitor Name: <input type='text' name='visitor'></h3>
            <tr><th></th><th></th><th></th><th>Price</th><th>&#10004;</th><th>QTY</th></tr>

            <?php
            if (!($data = file('items.txt'))) {
                echo 'ERROR: Failed to open file! </body></html>';
                exit;
            }
            foreach ($data as $thedata) {
                list($partno, $name, $description, $price, $image) = explode('|', $thedata);
                echo "<tr><td><img src='$image' width='60' height='60' alt='image'></td><td><h3>$name</h3></td><td>&nbsp;&nbsp;&nbsp;&nbsp;$description</td>
                    <td>&nbsp;&nbsp;&nbsp;&nbsp;<b>&pound;$price</b></td><td><input type='checkbox' name='$partno'></td><td><input type='text' size='1' name='qty' value='1'</td></tr>";
            }
            ?> 

        </table>

これまで私が試した...

function validateName()
    {
        var x=document.forms["purchase"]["$partno"].value;
        if (x==null || x=="")
        {
            alert("Select atleast one item");
            return false;

それは惨めに失敗しました。

新しいコード

<script>
        function validateName()
        {
            var x=document.getElementById("purchase").value
            if (x==null || x=="")
            {
                alert("Visitor name must be entered");
                return false;
            }
        }
    </script>
</head>

<body>

    <h1>Items Available</h1>

    <form id="purchase" name="purchase" action="confirm.php" method="post" onsubmit="return validateName()">
        <table>

            <h3>Visitor Name: <input type='text' name='visitor'></h3>
            <tr><th></th><th></th><th></th><th>Price</th><th>&#10004;</th><th>QTY</th></tr>

            <?php
            if (!($data = file('items.txt'))) {
                echo 'ERROR: Failed to open file! </body></html>';
                exit;
            }
            foreach ($data as $thedata) {
                list($partno, $name, $description, $price, $image) = explode('|', $thedata);
                echo "<tr><td><img src='$image' width='60' height='60' alt='image'></td><td><h3>$name</h3></td><td>&nbsp;&nbsp;&nbsp;&nbsp;$description</td>
                    <td>&nbsp;&nbsp;&nbsp;&nbsp;<b>&pound;$price</b></td><td><input type='checkbox' name='$partno'></td><td><input type='text' size='1' name='qty' value='1'</td></tr>";
            }
            ?> 

        </table>
4

3 に答える 3

0

$partno 変数を渡したい場合は、非表示として渡す必要があります

<input type="hidden" value=$partno">

function validateName()
   {
    var x=document.forms["purchase"]["$partno"].value;
    if (x==null || x=="")
     {
        alert("Select atleast one item");
        return false;
于 2013-03-20T20:06:31.230 に答える
0

これでうまくいきます --

<h3>Visitor Name: <input type='text' id="name" name='visitor'></h3>

およびスクリプト用

<script>
    function validateName()
    {
        var x = document.getElementById("name").value
        if (x==null || x=="")
        {
            alert("Visitor name must be entered");
            return false;
        }
    }
</script>
于 2013-03-21T06:43:05.900 に答える
0

最初に、JavaScript がアクセスするフォームで HTML 属性「id」を使用します。

<form id="purchase" name="purchase" action="confirm.php" method="post" onsubmit="return validateName()">

次に、次を使用してアクセスします。

document.getElementById("purchase").value 
于 2013-03-20T18:59:23.700 に答える