我正在使用 jquery validate插件来使用此插件的远程方法验证数据库的电子邮件地址. 我需要检查电子邮件地址是否已经在我们的数据库中.最初,脚本与服务器端代码组合只是检查我们数据
我需要检查电子邮件地址是否已经在我们的数据库中.最初,脚本与服务器端代码组合只是检查我们数据库中的电子邮件地址并返回true或false,这成功.
我现在需要添加一个额外的功能,因为现在我们可以在数据库中拥有相同的电子邮件地址,只要记录的siteid不同,即如果fred@bloggs.com的记录存在于siteid = site1中在数据库中,您无法再次使用siteid = site1添加fred@bloggs.com,但可以使用siteid = site2添加fred@bloggs.com.
我已经确认服务器端代码正在运行,对于给定的电子邮件地址和siteid,它会按预期返回true或false.
我想在更改siteid选择框时重新验证电子邮件字段.目前它似乎记得它以前的验证(它已经在加载时已经验证)并且不受siteid更改的影响,除非我将电子邮件从fred@bloggs.com更改为其他内容,然后将其更改回来,然后它正确验证对于新的siteid.我尝试过删除规则和添加规则的组合,似乎没有任何效果.
救命!
<html> <head> <script type="text/javascript"> $(document).ready(function () { var enquiryform = { rules: { email: { required: true, email: true, remote: 'emailcheck2.asp?siteid=' + $('#siteid').val() } }, messages: { email: { remote: 'exists already!' } } }; var validatedform = $(".validatedform").validate(enquiryform).form(); $("#siteid").bind("change", function(e){ enquiryform.rules.email.remote='emailcheck2.asp?siteid=' + $('#siteid').val(); }); }); </script> </head> <body class="contactadd"> </head> <body> <form method="Post" class="validatedform"> <input class="email" id="email" name="email" type="text"> <select id="siteid" name="siteid"> <option value="1">Site 1</option> <option value="2">Site 2</option> </select> <input id="submitbutton" type="submit" value="Create"> </form> </body> </html>由于性能原因,插件会缓存该值.作为现在的解决方法,您可以尝试在从属值更改时手动使缓存无效:
$("#site").change(function() { $("#email").removeData("previousValue"); });