JavaScript表单验证

dom events - JavaScript form validation onsubmit

本文关键字:验证 表单 JavaScript      更新时间:2023-09-26

我试图在使用onsubmit事件提交到订单页面之前验证此表单,但它不起作用。不知道我做错了什么。此外,如何将带有价格和产品ID的选定产品提交到订单页面?我需要使用表单控件来允许用户输入个人和账单信息(姓名,地址等),对此有任何帮助将不胜感激。

这是我的代码,我试图验证与onsubmit:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>Javascript - Shopping Cart</title>
    
    <script type="text/javascript" charset="utf-8">
        function checkCheckBoxes( ) {
            if (document.frmTest.product1.checked == false &&
                document.frmTest.product2.checked == false &&
                document.frmTest.product3.checked == false &&
                document.frmTest.product4.checked == false)
                    {
                    alert ('You must select a product to continue.');
                    return false;
                    }
            else
                    {
                    return true;
                    }
        }
    </script>
    
</head>
<body>
    <h1>Shopping Cart - Product Page</h1>
    
    <form name="product" method="post" action="" onsubmit="return checkCheckBoxes( );" >
        
        <div id="product1">     
            <p id="title1"><b>Desktop Computer</b></p>
            <img src="images/desktop.jpg" alt="desktop" width="100"/>
            
            <p>The latest in desktop computing.</p>
            <p><input type="checkbox" name="product1" id="001">Price $599.99</p>     
        </div>
        <div id="product2">
            <p id="title2"><b>Monitor</b></p>
            <img src="images/monitor.jpg" alt="monitor" width="100"/>
            <p>21 inch monitor</p> 
            <p><input type=checkbox name="product2" id="002">Price $159.99</p>
        </div>
        <div id="product3">
            <p id="title3"><b>Keyboard</b></p>
            <img src="images/keyboard.jpg" alt="keyboard" width="100"/>
            <p>USB Keyboard</p> 
            
            <p><input type=checkbox name="product3" id="003">Price $39.99</p>           
        </div> 
        <div id="product4">
            <p id="title4"><b>Mouse</b></p>
            <img src="images/mouse.jpg" alt="mouse" width="100" />
            <p>USB Keyboard</p> 
            <p><input type=checkbox name="product4" id="004">Price $25.99</p>
            </p>
        </div>
        <br />
        <input type="submit" value="Submit" name="submit" onClick="cart()";/><input , type="reset" value="Reset" name="reset">
    
    </form>

</body>
</html>

尝试更改if语句以使用getElementById。我运行了你的代码,但使用了if语句:

if ( (document.getElementById("001").checked == false) &&
    (document.getElementById("002").checked == false) &&
    (document.getElementById("003").checked == false) &&
    (document.getElementById("004").checked == false))

变化

<form name="product"

<form name="frmTest"

如果您安装了像Firebug这样的调试器,您可以调用

checkCheckBoxes( );
在控制台中手动地

(不提交表单),这样您就可以看到函数生成的错误消息,在本例中是

TypeError: document.frmTest is undefined

由于表单的名称是"product", "document.frmTest…"应该改为"document.product…"