我正在使用JörnZaefferer的优秀jquery.validation插件,我想知道是否有一种简单的方法可以在验证之前自动修剪表单元素?
以下是验证电子邮件地址的表格的简化但有效的示例:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"
type="text/javascript"></script>
<script src="http://ajax.microsoft.com/ajax/jquery.validate/1.5.5/jquery.validate.js"
type="text/javascript"></script>
<script type="text/javascript">
$().ready(function() {
$("#commentForm").validate({
rules: {
email: {
required: true,
email: true
}
}
});
});
</script>
</head>
<body>
<form class="cmxform" id="commentForm" method="get" action="">
<label for="cemail">E-Mail:</label><input id="cemail" name="email"
class="required email" />
<input class="submit" type="submit" value="Submit"/>
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
问题是一些用户感到困惑,因为他们意外地在他们的电子邮件地址中输入了一些空格,例如"test@test.com".表单将不会提交并显示错误消息:"请输入有效的电子邮件地址.".非技术用户不知道如何发现空白,可能只是退出网站而不是试图弄清楚他们做错了什么.
无论如何,我希望我可以jQuery.trim(value)在验证之前链接" ",这样就删除了空白并且验证错误永远不会发生?
我可以使用addMethod来构建我自己的电子邮件验证功能.但我确信有一个更优雅的解决方案?
我想使用jquery validate插件验证表单,但是我无法在html中使用'name'值 - 因为这是服务器应用程序也使用的字段.具体来说,我需要限制从组中检查的复选框的数量.(最多3个.)我看过的所有例子都使用每个元素的name属性.我想要做的是改用类,然后为此声明一个规则.
HTML
这有效:
<input class="checkBox" type="checkbox" id="i0000zxthy" name="salutation" value="1" />
Run Code Online (Sandbox Code Playgroud)
这不起作用,但是我的目标是:
<input class="checkBox" type="checkbox" id="i0000zxthy" name="i0000zxthy" value="1" />
Run Code Online (Sandbox Code Playgroud)
JavaScript的:
var validator = $(".formToValidate").validate({
rules:{
"salutation":{
required:true,
},
"checkBox":{
required:true,
minlength:3 }
}
});
Run Code Online (Sandbox Code Playgroud)
是否可以这样做 - 有没有一种方法可以在规则选项中定位类而不是名称?或者我是否必须添加自定义方法?
干杯,马特
我如何使用JQuery Validate插件为3个字段提供一条错误消息.例如3个dob字段.默认情况下,如果所有3个字段都留空,我将收到3条错误消息.我只想将一个错误链接到3个字段.如果有任何空白,则会出现错误.
这是验证的模型:
[MetadataType(typeof(TagValidation))]
public partial class Tag
{
}
public class TagValidation
{
[Editable(false)]
[HiddenInput(DisplayValue = false)]
public int TagId { get; set; }
[Required]
[StringLength(20)]
[DataType(DataType.Text)]
public string Name { get; set; }
//...
}
Run Code Online (Sandbox Code Playgroud)
这是观点:
<h2>Create</h2>
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>Tag</legend>
<div>@Html.EditorForModel()</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
}
<div>
@Html.ActionLink("Back to List", "Index")
</div>
Run Code Online (Sandbox Code Playgroud)
这是得到的渲染:
<form action="/Tag/Create" method="post">
<fieldset>
<legend>Tag</legend>
<div><input data-val="true" data-val-number="The field TagId must be a number." data-val-required="The …Run Code Online (Sandbox Code Playgroud) 任何人都可以告诉我为什么客户端验证不适用于我的MVC 4应用程序.
@Scripts.Render("~/bundles/jquery")
@RenderSection("scripts", required: false)
Run Code Online (Sandbox Code Playgroud)
在我的web.config中,我有:
<appSettings>
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
Run Code Online (Sandbox Code Playgroud)
在我的login.cshtml页面中,我有:
@using (Html.BeginForm())
{
<div class="formscontent">
<ol>
<li>
@Html.LabelFor(x => x.AgreementNumber)
<br />
@Html.TextBoxFor(x => x.AgreementNumber, new { size = "30" })
<br />
@Html.ValidationMessageFor(m => m.AgreementNumber)
<br />
<br />
</li>
<li>
@Html.LabelFor(x => x.UserName)
<br />
@Html.TextBoxFor(x => x.UserName, new { size = "30" })
<br />
@Html.ValidationMessageFor(m => m.UserName)
<br />
<br />
</li>
<li>
@Html.LabelFor(x => x.Password)
<br …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用不同浏览器中使用日期选择器的最简单方案.我怀疑我做的事情非常简单,但是经过大量的搜索,我仍然没有找到解决方案.下面是一些代表我正在尝试的示例代码.
如果我使用Chrome(v12.0.742.122)并从选择器中选择日期,例如13/08/2011,即使我已明确指定格式为'dd/mm /,jQuery验证逻辑也不允许页面提交YY".
如果我将格式更改为'dd/M/yy'并选择类似13/Aug/2011的日期,则可以在Chrome中使用,但之后不会在IE中提交(v8.0.7600.16385).在FireFox(v3.6.18)中,两种格式都有效.
我需要哪些验证脚本才能支持Chrome中'dd/mm/yy'的日期格式?
<html>
<head>
<link rel="stylesheet" type="text/css" href="jquery-ui.css" />
<script type="text/javascript" src="jquery-1.4.4.js"></script>
<script type="text/javascript" src="jquery.validate.js"></script>
<script type="text/javascript" src="jquery.validate.unobtrusive.js"></script>
<script type="text/javascript" src="jquery-ui.js"></script>
<script type="text/javascript">
$(document).ready(function () {
$('.date').datepicker({ dateFormat: 'dd/mm/yy' });
$.validator.addMethod("dateRule", function(value, element) {
return true;
},
"Error message");
});
</script>
</head>
<body>
<form>
Date: <input type="text" name="myDate" class="date dateRule" />
<input type="submit" />
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud) jquery jquery-ui datepicker jquery-validate unobtrusive-validation
我正在使用jQuery Validate,但我真的不希望收到任何错误消息.相反,我需要在违规输入/选择/等周围设置红框.这些红色框是一块蛋糕,但我仍然无法删除错误信息.如何完全禁用它们?
我正在使用MVC创建在运行时生成的表单.为了验证,我正在尝试使用非常方便的jQuery验证库.我有标签的cdata属性中每个字段的验证表达式
<input type="text" name="xyz" id="xyz" class="defaultTextBox"
cdata="{validate:{required:true, decimal:true, messages:
{required:'Please enter an decimal value',
decimal:'Please enter a valid decimal'}}}">
Run Code Online (Sandbox Code Playgroud)
这很好用.现在我还有一个要求是根据页面上的逻辑显示和隐藏某些字段,我需要在隐藏字段上禁用验证,这样它们就不会干扰表单提交.只需将所需的:true转换为false并返回true即可.只有我不知道怎么做.
任何人都有这方面的经验吗?
我阅读了关于jQuery验证器的回复,其中概述了一种根据数据库中的值检查用户名的方法.
我已经尝试过实现这个方法,但无论从PHP文件返回什么,我总是得到用户名已被取消的消息.
这是自定义方法......
$.validator.addMethod("uniqueUserName", function(value, element) {
$.ajax({
type: "POST",
url: "php/get_save_status.php",
data: "checkUsername="+value,
dataType:"html",
success: function(msg)
{
// if the user exists, it returns a string "true"
if(msg == "true")
return false; // already exists
return true; // username is free to use
}
})}, "Username is Already Taken");
Run Code Online (Sandbox Code Playgroud)
这是验证码...
username: {
required: true,
uniqueUserName: true
},
Run Code Online (Sandbox Code Playgroud)
是否有一种特定的方式我应该从PHP返回消息.
谢谢
一个
有focusInvalid选项,true默认情况下.但它只在表单提交发生时才有效.如果我使用valid方法验证表单,那么它不起作用.那么问题是如何在valid使用时关注无效字段?
请参阅此演示以了解其中的差异.只需按下那里的按钮.
jquery-validate ×10
jquery ×7
validation ×2
ajax ×1
asp.net-mvc ×1
css ×1
datepicker ×1
html ×1
javascript ×1
jquery-ui ×1