Javascript 使用jquery验证输入框值过时
我正在使用jQueryV1.9.1和jQueryValidateV1.9。我正在尝试获取用户给定的id,并使用远程方法验证它。我想检查它是否存在于数据库中。但是,我无法让发送到php脚本的json正常工作,因为我使用ajax获得的值已经过时。下面的代码(我删掉了php)构建了字符串“MailingListID:1”,即使我为MailingListID的值输入了12而不是1 JSJavascript 使用jquery验证输入框值过时,javascript,php,jquery,ajax,jquery-validate,Javascript,Php,Jquery,Ajax,Jquery Validate,我正在使用jQueryV1.9.1和jQueryValidateV1.9。我正在尝试获取用户给定的id,并使用远程方法验证它。我想检查它是否存在于数据库中。但是,我无法让发送到php脚本的json正常工作,因为我使用ajax获得的值已经过时。下面的代码(我删掉了php)构建了字符串“MailingListID:1”,即使我为MailingListID的值输入了12而不是1 JS <script src="//code.jquery.com/jquery-1.9.1.js"></
<script src="//code.jquery.com/jquery-1.9.1.js"></script>
<script src="//ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.min.js"> </script>
<script>
$(function() {
$("#createForm").validate({
rules:
{
WebFormURL:
{
required: true,
url: true
},
RedirectURL:
{
required: true,
url: true
},
DownloadURL:
{
required: false,
url: true
},
EmailNotification:
{
email: true
},
MailingListID:
{
"remote":
{
url: 'checkMailingListID.php',
type: "POST",
//contentType: "application/json; charset=utf-8",
//dataType:"json",
data: "MailingListID=" + $('#mlID').attr('value'),
dataFilter: function(data) {
var json = JSON.parse(data);
if(json === null) {
return false;
}
if(json.mlExists == "false") {
return "\"" + json.errorMessage + "\"";
} else {
return success;
}
}
}
}
},
messages:
{
MailingListID:
{
remote: jQuery.validator.format("No Mailing List with ID {0} exists.")
}
},
submitHandler: function(form)
{
form.submit();
}
});
});
</script>
$(函数(){
$(“#createForm”)。验证({
规则:
{
WebFormURL:
{
要求:正确,
网址:true
},
重定向URL:
{
要求:正确,
网址:true
},
下载网址:
{
必填项:false,
网址:true
},
电子邮件通知:
{
电子邮件:真的
},
MailingListID:
{
“远程”:
{
url:'checkMailingListID.php',
类型:“POST”,
//contentType:“应用程序/json;字符集=utf-8”,
//数据类型:“json”,
数据:“MailingListID=“+$('#mlID').attr('value'),
数据过滤器:函数(数据){
var json=json.parse(数据);
if(json==null){
返回false;
}
if(json.mlExists==“false”){
返回“\”+json.errorMessage+“\”;
}否则{
回归成功;
}
}
}
}
},
信息:
{
MailingListID:
{
remote:jQuery.validator.format(“不存在ID为{0}的邮件列表”)
}
},
submitHandler:函数(表单)
{
表单提交();
}
});
});
HTML
<h1>Web Form Creator</h1><form id="createForm" name="createForm" method="post" action="">
<table>
<tr><td colspan="2" align="left"><h2><b>Enter form details</b></h2></td></tr>
<tr><td><b>Web Form Name: </b></td><td><input type="text" name="WebFormName" id="WebFormName" size="45"/></td></tr>
<tr><td><b>Web Form URL: </b></td><td><input type="text" value="http://www.SIMUL8.com/" name="WebFormURL" id="WebFormURL" size="45"/></td></tr>
<tr><td><b>Redirect URL: </b></td><td><input type="text" value="http://www.SIMUL8.com/" name="RedirectURL" id="RedirectURL" size="45"/></td></tr>
<tr><td><b>Download URL: </b></td><td><input type="text" value="http://www.SIMUL8.com/" name="DownloadURL" id="DownloadURL" size="45"/></td></tr>
<tr><td><b>Send Notification Email to: </b></td><td><input type="text" name="EmailNotification" id="EmailNotification" size="45"/></td></tr>
<tr><td><b>Subscribe to Mailing List: </b></td><td><input type="text" value="1" name="MailingListID" id="mlID" size="45"/></td></tr>
<tr><td colspan="2" align="left"><input type="submit" name="submit" id="submit" value="Generate Form" /></td></tr>
</table>
</form>
Web表单创建者
输入表单详细信息
Web表单名称:
Web表单URL:
重定向URL:
下载网址:
发送通知电子邮件至:
订阅邮件列表:
我还尝试完全删除值,然后只得到一个空白值:
<tr><td><b>Subscribe to Mailing List: </b></td><td><input type="text" name="MailingListID" id="mlID" size="45"/></td></tr>
订阅邮件列表:
我尝试了其他方法来获取输入框值,如$('#mlID').val()等,但都没有效果。ContentType和dataType也没有区别。我假设jQuery验证库是在html表单由于某种原因而有机会更新之前被调用的。有人能给我一些提示吗?我曾考虑尝试使用两个jquery库的更新版本,但我找不到它们的URL。你误解了。所描述的“响应”是从服务器端代码返回的。您不能“返回
”远程中的任何内容
MailingListID: {
remote: {
url: 'checkMailingListID.php',
type: 'POST',
}
}
由于服务器端脚本是PHP,因此只需echo
atrue
、false
或表示错误消息的JSON格式字符串即可
“通过jQuery.ajax(XMLHttpRequest)调用服务器端资源并获取与已验证元素的名称及其作为GET参数的值相对应的键/值对。响应作为JSON计算,对于有效元素必须为true
,对于无效元素,可以为任何false
、undefined
或null
,使用默认消息;或string,例如“该名称已被使用,请尝试使用peter123”显示为错误消息
旁注:这正是默认行为。。。因此,您根本不需要submitHandler
选项
submitHandler: function(form) {
form.submit();
}
我没有尝试,只是猜测一下——也许你应该为你的输入字段添加一个change()事件监听器。啊,你是对的。非常感谢你的帮助。