【问题标题】:Disable a form 'action' if jquery validation fails如果 jquery 验证失败,则禁用表单“操作”
【发布时间】:2010-07-09 00:58:17
【问题描述】:

我正在尝试最终确定我网页的购物车,但我遇到了最后一个问题。我的“添加到购物车”按钮旁边有一个文本框,需要在完成购买之前输入特定的硬件密钥(指纹)。我需要对其进行设置,以便最终用户在验证该字段之前无法单击“添加到购物车”。

我已成功设置验证以使文本框成为必需并且只允许特定的字符串,但在成功验证文本框之前,我似乎无法弄清楚如何动态“禁用”表单操作。

这是我的 jquery:

<script>
$(document).ready(function() {

$.validator.addMethod("os0", function(value) {
    return /^(([a-fA-F0-9]{4,4})+\-([a-fA-F0-9]{4,4}))$/.test(value); 
    }, "Invalid Fingerprint.");     

$("#myFingerprint").validate({  
     rules: {
        os0: "required os0",
    },      
  });
});
</script>

这是相应的 HTML:(表单代码是从我们的电子商务提供商处复制和粘贴的)

<td>                                                            
 <form id="myFingerprint" action="https://www.blahblahblah.com/ecom/gb.php?c=cart&i=770678&cl=122992&ejc=2" target="ej_ejc" method="POST" accept-charset="UTF-8">

 <input type="hidden" name="on0" value="Fingerprint"/>

Fingerprint:<br/>

<input type="text" id="os0" name="os0" maxlength="9"/>

<input type="image" src="http://www.blahblahblah.com/add_to_cart.gif" border="0" alt="Add to Cart" class="ec_ejc_thkbx" onClick="javascript:return EJEJC_lc(parent);"/>
 </form>
</td>

【问题讨论】:

    标签: jquery validation jquery-validate


    【解决方案1】:

    您可以为表单提供onsubmit 方法,然后如果表单未通过验证,则取消表单提交。

    $('#myFingerprint').submit(function (e) {
        if(!all_of_my_validation_passed) {
            e.preventDefault();
        }
    });
    

    【讨论】:

      【解决方案2】:

      Matchu,你是救命稻草。这就像一个魅力。

      不过,我确实遇到过一件奇怪的事情。添加该脚本后,当输入有效的硬件密钥并单击“添加到购物车”时,我的购物车现在会在新的浏览器选项卡中打开,而不是在同一窗口中弹出。这里有什么想法吗?以防万一,我的新 html 表单代码如下所示:

      <form id="myFingerprint" action="https://www.e-junkie.com/ecom/gb.php?c=cart&i=770678&cl=122992&ejc=2"  method="POST" onSubmit="return function(e)" target="ej_ejc" accept-charset="UTF-8">
      

      【讨论】:

      • 对于这些简单的问题,我深表歉意。我还是 javascript/jquery 的新手。
      • 您的表单具有target 属性,这将导致它在内部名称为“ej_ejc”的新选项卡中打开。如果你真的想要它,你可能应该只拥有它。此外,在 SO 上,当一个答案回答了您的问题时,请务必单击它旁边的复选标记,以便发帖者获得信用 :) 谢谢!
      • 一定会的。感谢您的提醒!
      猜你喜欢
      • 1970-01-01
      • 2014-08-17
      • 2019-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-26
      相关资源
      最近更新 更多