javascript表单不起作用

Posted

技术标签:

【中文标题】javascript表单不起作用【英文标题】:javascript form doesn't work 【发布时间】:2013-02-12 09:43:24 【问题描述】:

我尝试创建一个 javascript 表单,但无法使用它。出现的错误是

邮政编码应由字母和数字组成: 地址应该是字母数字:

请将每本杂志限制在 500 份以内

函数显示() var 总价格; var fname、lname、fullname、addr、postocde、电子邮件、电话、lstitem、数量、性别; var prditem1,prditem2,prditem3,2012 年夏季,2012 年秋季,2012 年冬季,totqty; var orddate; fname = document.form1.fname.value; lname = document.form1.lname.value; //全名 = fname + " " + lname; 性别 = document.form1.gender.value; addr = 文档.form1.address.value; 邮政编码 = document.form1.address.value; 电子邮件 = document.form1.email.value; 电话 = document.form1.telephone.value; prditem1 = document.form1.summer.value; prditem2 = document.form1.autumn.value; prditem3 = document.form1.winter.value; summer2012 = parseInt(document.form1.summer2012.value); 秋季 2012 = parseInt(document.form1.autumn2012.value); Winter2012 = parseInt(document.form1.winter2012.value); totqty = 2012 年夏季 + 2012 年秋季 + 2012 年冬季; orddate = 新日期(); dispdate = orddate.getMonth() + 1 + "-" + orddate.getDate() + "-" + orddate.getYear(); var alertmsg = ''; var 字母 = /^[a-zàâçéèêêëîïôûùüÿñ-]*$/i var 字母数字 = /^[a-zA-Z0-9/./,/-/\n]+$/; var addrtxt = addr.replace(/(\x0a\x0d|\x0d\x0a)/g, "\n"); var chkpostcode = /^((GIR 0AA)|((([A-PR-UWYZ][A-HK-Y]?[0-9][0-9]?)|(([A-PR-UWYZ] ][0-9] [A-HJKSTUW])|([A-PR-UWYZ][A-HK-Y][0-9][ABEHMNPRV-Y]))) [0-9][ABD-HJLNP -UW-Z]2))$/ var chktelephone = /^0\d9,10$/ var chkEmail = /^.+@.+..+$/ var chkquantity = /^([1-9]?\d|[1-4]\d2|500)$/ if (chkEmail.test(email) == false) alertmsg = alertmsg + "请输入有效的电子邮件。" + "\n"; 如果 ((alphabetic.test(fname) == false) || (alphabetic.test(lname) == false)) alertmsg = alertmsg + "名字应该是字母:" + "\n"; 如果(chktelephone.test(电话)==假) alertmsg = alertmsg + "电话应该是数字:" + "\n"; if (chkpostcode.test(postcode) == false) alertmsg = alertmsg + "邮政编码应为字母和数字:" + "\n"; if (alphanumeric.test(addrtxt) == false) alertmsg = alertmsg + "地址应该是字母数字:" + "\n"; var 性别 = document.form1.gender[0].checked; var gender1 = document.form1.gender[1].checked; if (!gender && !gender1) alertmsg = alertmsg + "请选择您的性别\n" 如果 (((document.form1.summer.checked) && (summer2012 0)) || ((!document.form1.autumn.checked) && (autumn2012 > 0)) || ((!document.form1 .winter.checked) && (winter2012 > 0))) alertmsg = alertmsg + "请选择产品" + "\n"; var f = document.form1; 如果 (!f.summer.checked && !f.​​autumn.checked && !f.​​winter.checked) alertmsg = alertmsg + "请至少选择一期杂志" + "\n"; 如果(chkquantity.test(数量)

谁能指出我做错了什么?任何帮助将不胜感激。谢谢

这里是html -

<form name="form1" method="post">
    <fieldset id="fieldset">
       <legend id="legend">Order the latest Saraysounds Magazine</legend>

<table  border=0 align="left" cellpadding="4" cellspacing="4">


        <tr>
          <td colspan="2"><div align="left">First
              Name</div></td>
          <td colspan="2"><input type="text" name="fname"/>
          </td>
        </tr>
        <tr>
          <td colspan="2"><div align="left">Second
              Name</div></td>
          <td colspan="2">
            <input type="text" name="lname"/>
         </td>
        </tr>

        <tr>
          <td colspan="2"><div align="left">Gender</div></td>
          <td colspan="2">
            <input type="radio" name="gender" value="M"/>
           Male 
            <input type="radio" name="gender" value="F"/>
            Female </td>
        </tr>

        <tr>
          <td colspan="2"><div align="left">Address</div></td>
          <td colspan="2"><textarea name="address" cols="30" rows=5 col=40 wrap=soft>     </textarea>
          </td>
          </tr>
          <tr>
           <td colspan="2"><div align="left">Postcode</div></td>
          <td colspan="2">  <input type="text" name="postcode"/>
      </td>
    </tr>

       <tr>
      <td colspan="2"><div align="left">Email</div></td>
      <td colspan="2">
        <input type="text" name="email"/>
      </td>
    </tr>

     <tr>
      <td colspan="2"><div align="left">Telephone</div></td>
      <td colspan="2">
        <input type="text" name="telephone"/>
      </td>
    </tr>


    <tr>
             <td colspan="4"><center>
               <strong>Select
               Magazine</strong>
             </center></td>
             </tr>
             <tr>
             <td ><center>
               <strong>Product Name</strong>
             </center></td>
             <td  ><center>
               <strong></strong>
             </center></td>
               <td ><center>
               <strong>Price</strong>
             </center></td>
               <td>
              <strong>Quantity</strong>
             </td>
             </tr>
           <tr>
             <td  align="right">Summer 2012
               </td>
             <td>
               <input type="checkbox" name="summer" value="Summer 2012"/>
           </td>
             <td align="center" ><div align="right">20.00 </div></td>
             <td ><input name="summer2012" type="text" size="5" value="0"/></td>
           </tr>
         <tr>
             <td align="right">Autumn 2012
             </td>
             <td>
               <input type="checkbox" name="autumn" value="Autumn 2012"/>
           </td>
             <td align="center" ><div align="right">20.00 </div></td>
             <td><input name="autumn2012" type="text" size="5" value="0"/></td>
         </tr>
         <tr>
             <td align="right">Winter 2012
           </td>
             <td>
               <input type="checkbox" name="winter" value="Winter 2012"/>
          </td>
             <td align="center"  ><div align="right">20.00</div></td>
             <td><input name="winter2012" type="text" size="5" value="0"/></td>
         </tr>

           <tr>
             <td align="center" colspan="4"><input name="button" type="button" onClick="javascript:display()" value="Submit"/>
              <input type="reset" value="Clear Form"/>
             </td>
           </tr>
      </table>

 </fieldset>
</form>

【问题讨论】:

请也显示 HTML...(3 周真是太长了...) 请向我们提供指向您的代码示例jsfiddle 的链接,以便我们为您提供帮助! 有什么不好的?究竟出了什么问题? 这个问题对我们帮助不大。你排除了任何可能的问题吗?你能把它缩小到任何类别,无论多么广泛?到目前为止你做了什么? 它不会除了我的小写或大写邮政编码。它说地址必须是字母数字,除了数量之外不会 【参考方案1】:

修改这些:

脚本

var alphanumeric = /^[a-zA-Z0-9\.\,\-\n]+$/;

var quantity = new Array();
 quantity[0] = parseInt(document.form1.summer2012.value);
 quantity[1] = parseInt(document.form1.autumn2012.value);
 quantity[2] = parseInt(document.form1.winter2012.value);
 if (quantity[0] > 500 || quantity[1] > 500 || quantity[2] > 500) 
     alertmsg = alertmsg + "Please limit each magazine to 500 copies or less:" + "\n";
 

HTML

<td colspan="2"><textarea name="address" cols="30" rows=5 col=40 wrap=soft></textarea>

【讨论】:

我修改了数量,没有出现错误信息,但允许我输入超过500份?

以上是关于javascript表单不起作用的主要内容,如果未能解决你的问题,请参考以下文章

带有 javascript 和 php 的动态表单字段:它不起作用

使用 html 和 javascript 来允许是不是调用表单操作不起作用(在 php 中回显)

当javascript在元素上调用提交时,jQuery覆盖表单提交不起作用

尝试通过Javascript验证表单,但代码不起作用

JavaScript e.preventDefault();形式上不起作用

Javascript 验证在 ASP 中不起作用。网