2010-07-08 31 views
0

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

我已成功设置验证,使文本框需要,只允许特定的字符串,但我似乎无法弄清楚如何动态'禁用'窗体操作,直到文本框成功验证。

这里是我的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> 

回答

2

你可以给一个形式onsubmit方法,然后取消表单提交如果表单未验证。

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

林肯,你是一个救命的人。这就像一个魅力。

虽然我确实有一个奇怪的发生。添加该脚本后,当输入有效的硬件密钥并单击“添加到购物车”时,我的购物车现在会在新的浏览器选项卡中打开,而不是在同一窗口中弹出。这里的任何想法?以防万一,我的新的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"> 
+0

我对这些简单的问题表示歉意。我仍然是JavaScript/jquery的新手。 – GetAwesome 2010-07-08 16:59:02

+0

您的表单具有'target'属性,这会导致它在内部名称为“ej_ejc”的新选项卡中打开。如果你真的想在那里,你应该只有这样。此外,在SO上,当答案回答你的问题时,一定要点击它旁边的复选标记,以便海报得到赞誉:)谢谢! – Matchu 2010-07-08 17:00:20

+0

肯定会做。感谢您的领导! – GetAwesome 2010-07-08 17:01:41