我有一个表单,我使用远程验证来检查数据库中是否已存在电子邮件地址.然而,问题在于,在这种形式上,用户可以在几个不同的"组"之间进行选择,并且每个组具有其自己的不同的电子邮件地址集(因此相同的电子邮件可以在每个组中存在一次).
组选择是表单上的下拉列表,电子邮件地址是具有远程验证的输入字段.我有几个问题.首先,我已经设置了这样的远程规则:
remote: {
url: 'remote_script.php',
data: { group_id: $('select.group_id').val() }
}
Run Code Online (Sandbox Code Playgroud)
但是,这似乎将group_id参数静态设置为select中的第一个值.意思是,如果我更改选择,然后再次触发远程验证,则group_id参数不会更改
首先,如何使此参数动态化,具体取决于表单中select的值?
其次,如何在电子邮件地址字段中手动触发远程验证?当group_id select更改时,我想在电子邮件地址字段上重新触发远程验证(不更改字段的值).我试过用
$(selector).validate().element('.email_addr')
Run Code Online (Sandbox Code Playgroud)
但这似乎只触发标准验证(必需,电子邮件),而不是远程调用.
好的,我放弃了.在尝试了内联函数,回调,返回参数的无穷无尽的排列之后,我仍然无法按照我的意愿行事.任何帮助,将不胜感激.
当前状态:除"checkEmail"错误消息外,一切正常.javascript弹出窗口向用户传达正确的消息,但该字段不会显示任何错误消息,处理程序返回true或false.
期望的结果是,如果来自AJAX调用的JSON有效负载不是200,则弹出Javascript警报并使用相应的错误消息将该字段突出显示为无效.目前,它会弹出警报,但不会将该字段标记为无效.
(对不起,这是jQuery 1.7 + jquery.validation插件)
我们的JSON响应有效负载如下所示:
{"message": "Email is not in use.", "code": 200, "email": "test-39485787@mailinator.com"}
Run Code Online (Sandbox Code Playgroud)
要么
{"message": "Duplicate email address detected", "code": 401}
Run Code Online (Sandbox Code Playgroud)
<html>
<head>
<script>
// You'd think this should be false, but no
// Also it apparently needs to be a quoted
// string: http://stackoverflow.com/a/11496502/814669
var checkEmailStatus = "true";
// Success Handling
checkEmailSuccess = function(data, textStatus, jqXHR) {
checkEmailStatus = "true";
switch (data.code) {
case 200:
checkEmailStatus = "false"; // Nothing set here …Run Code Online (Sandbox Code Playgroud) 我正在使用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 …Run Code Online (Sandbox Code Playgroud)