在模型上使用Data Annotations时,我遇到了为客户端验证而发出的JavaScript的问题.这是一个模型的示例,它可以很好地处理两个必填字段,然后是发出的JavaScript:
public class LoginUserViewModel
{
[Required(ErrorMessage = "Email required")]
public string EmailAddress { get; set; }
[Required(ErrorMessage="Password required")]
public string Password { get; set; }
}
}
//<![CDATA[
if (!window.mvcClientValidationMetadata) { window.mvcClientValidationMetadata = []; }
window.mvcClientValidationMetadata.push({"Fields":[{"FieldName":"EmailAddress","ReplaceValidationMessageContents":true,"ValidationMessageId":"form0_EmailAddress_validationMessage","ValidationRules":[{"ErrorMessage":"Email required","ValidationParameters":{},"ValidationType":"required"}]},{"FieldName":"Password","ReplaceValidationMessageContents":true,"ValidationMessageId":"form0_Password_validationMessage","ValidationRules":[{"ErrorMessage":"Password required","ValidationParameters":{},"ValidationType":"required"}]}],"FormId":"form0","ReplaceValidationSummary":false});
//]]>
Run Code Online (Sandbox Code Playgroud)
一旦我在EmailAddress字段上添加了另一个属性(正则表达式属性),JavaScript就不再发出任何规则.请注意,在下面的JavaScript中,只有一个空数组,其中应该是规则.这是改变和脚本.有任何想法吗?
public class LoginUserViewModel
{
[Required(ErrorMessage = "Email required")]
[RegularExpression(@"^[a-z0-9]+([-+\.]*[a-z0-9]+)*@[a-z0-9]+([-\.][a-z0-9]+)*{2,4}$", ErrorMessage = "Invalid email format")]
public string EmailAddress { get; set; }
[Required(ErrorMessage="Password required")]
public string Password { get; set; }
}
//<![CDATA[
if (!window.mvcClientValidationMetadata) { window.mvcClientValidationMetadata = []; } …Run Code Online (Sandbox Code Playgroud) var a="password";
Run Code Online (Sandbox Code Playgroud)
在任何变量中如何检查长度是否不小于6个字符而不是> 12
$(a).len();?????
Run Code Online (Sandbox Code Playgroud) 我们有一个ASP.NET MVC 3应用程序,它使用不显眼的jQuery验证.该页面允许在同一个go中将子对象添加到模型中.在<form>包含孩子的网格,并增加新的孩子一些输入字段.
将问题作为模型和子任务作为子项的简化示例:
Issue.cshtml - >定义表单并包含问题的字段及其子任务.
@model Issue
@using (Html.BeginForm("Create", "Issues", FormMethod.Post, new { id = "mainForm" })
{
@Html.TextBoxFor(model => model.Summary)
@Html.Partial("SubtaskFields", new Subtask())
@Html.Partial("SubtasksGrid", model.Subtasks)
}
Run Code Online (Sandbox Code Playgroud)
SubtaskFields.cshtml:
@model Subtask
@Html.TextBoxFor(model => model.Summary)
<button id="add">Add</button>
Run Code Online (Sandbox Code Playgroud)
SubtasksGrid.cshtml:
@model IEnumerable<Subtask>
<table>
@foreach (var subtask in Model)
{
<tr>
<td>
@subtask.Name
<input type="hidden" name="Subtasks[@subtask.Index].Name" value="@subtask.Name"/>
</td>
</tr>
}
</table>
Run Code Online (Sandbox Code Playgroud)
关键是,在提交表单时,只应验证和提交问题的属性(例如,Issue.Name),以及子项的隐藏字段(例如Subtask.Name).
我们有一些挂钩"添加"按钮的javascript代码,并根据SubtaskFields.cshtml局部视图中的值添加一个新的子任务.该脚本首先验证输入字段.为了使它能够工作,我们也使用了TextBoxFor用于SubtaskFields.cshtml的等html助手,渲染了一个虚拟/默认的子任务对象(new Subtask()).我们的javascript用于$("#mainForm").validate().element(...)在添加新子任务之前验证SubtaskFields.
这种方法的一个大问题是jQuery不显眼的验证框架会自动挂钩提交按钮并在提交表单之前验证表单中的所有字段.即,即使是子任务字段也经过验证.这没有任何意义.假设子任务名称是必需的(这意味着用户只有在填写了子任务名称时才能单击"添加").但是,如果用户没有单击"添加",则子任务字段中的值没有任何意义,尤其可以留空.在这种情况下,在我们当前的设置中, …
我在执行以下代码时遇到一些问题.
代码提交但它没有做任何事情,它回到同一个屏幕,似乎表单的值没有被提交.
<script type="text/javascript">
$(document).ready(function(){
$("#signin_form").validate({
debug: false,
rules: {
///
},
messages: {
///
},
submitHandler: function(form) {
var result;
$.post('test.php', $('#signin_form').serialize(), function(data){
result = $.parseJSON(data);
if (result.flag == 'false'){
$('#results').show()
}
})
.success(function(data){
if (result.flag == 'true'){
form.submit();
}
}, 'json');
}
});
});
</script>
Run Code Online (Sandbox Code Playgroud)如果我将代码改为以下,它可以工作,它需要我到正确的屏幕,但我需要验证,验证码,我不知道它是否是正确的地方,我尝试使用beforeSubmit但然后验证码未经验证.
<script type="text/javascript">
$(document).ready(function(){
$("#signin_form").validate({
debug: false,
rules: {
///
},
messages: {
///
},
submitHandler: function(form) {
form.submit();
}
});
});
</script>
Run Code Online (Sandbox Code Playgroud)有一些关于$ .post的东西,我不反感...并且没有提交信息.
有谁知道它可能是什么?谢谢!
我想通过按下按钮(而不是提交按钮)来显示所有验证错误.
somebutton.button().click(function () { //not submit button
//some code here
//to show up all validation messages
});
Run Code Online (Sandbox Code Playgroud)
我该怎么做?
我在MVC4验证中遇到了问题.目前,我使用validationMessageFor来获取错误消息.它不是那么美丽所以我想改变我的验证.我想做图形验证.例如,我想在条目表单中验证电子邮件.如果电子邮件有效,我的文本框将如下所示.
如果电子邮件错误,我想向用户显示以下内容.

在MVC4中,它可以做到吗?我应该如何根据图片设计我的文本框?如何在文本框中添加刻度图标和十字图标以及信封图标?如果电子邮件格式错误,如何填充红色?
感谢任何帮助,谢谢
我正在使用jQuery Validate.
这一切都正常工作,但是当有更多的消息时,消息显示在另一个旁边.
我需要消息显示在他们自己的行中.
$("#myform").validate({
errorLabelContainer: "#messageBox",
debug: false,
rules: {
name: "required",
email: {
required: true,
email: true,
},
password: {
required: true,
minlength: 8
},
},
messages: {
name: "Please enter your name.",
email: "Please enter a valid email address.",
password: "Please enter at least 8 password characters.",
}
});
Run Code Online (Sandbox Code Playgroud)
Run Code Online (Sandbox Code Playgroud)Current display: Message1Message2Message3 Wanted display: Message1 Message2 Message3
我怎样才能做到这一点?
我正在使用jquery验证,我想设置一个特定的电子邮件格式.
例如:qwerty@demo.com,在这里我要为"@ demo.com"设置验证.II不要在@之后需要任何其他格式,如gmail,yahoo等.
我如何在Jquery Validation插件中执行此操作?
我有两个按钮,一个用于Next,一个用于SAVE,单击Next我想让jQuery进行验证,但是当SAVE被点击时,jQuery将不会进行验证.这有事件处理程序吗?
我想根据下面的条件为单个字段提供不同的错误消息.
jQuery(document).ready(function () {
//...
..//
$("#aID").validate({
rules: {
reason: "required",
aic: "required"
aAmt:{
required: function (element) {
var err;
var new_balance = Math.round(100*beg_balance)/100 - Math.abs(Math.round(100*adjustAmount)/100);
if ((parseInt(aAmount) >= parseInt(a_limit_amount))) {
err = "123";
return true;
}
else if (new_balance)
{
err = "321";
return true;
}
return false;
}
}
}
},
messages: {
reason:"Please select a reason code.",
aic: "Please select a credit AIC.",
pwdOverride: err
},
});
Run Code Online (Sandbox Code Playgroud)
有一个如下选项
messages: {
RoutingNumber: {
required:"Message1",
digits: "Message2",
rangelength: "Message …Run Code Online (Sandbox Code Playgroud) jquery-validate ×10
jquery ×7
javascript ×3
asp.net-mvc ×2
.post ×1
ajax ×1
css ×1
php ×1
regex ×1
submit ×1
validation ×1