当动态解析要使用jQuery不显眼的验证插件验证的html时,不会显示验证消息.Js摆弄显示问题如下
的jsfiddle
render: function () {
var tmpl = _.template(this.template);
$.validator.unobtrusive.parse(tmpl);
this.$el.html(tmpl);
return this;
},
validateForm: function () {
//$(this.$el).validate();
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试显示单击"验证"按钮时需要usernaem的错误消息.但是没有任何反应,也是在模糊了控制台中可见的js错误之后.那么我如何使验证与Backbone.js视图一起工作
我正在使用ASP MVC 4并且我同时启用了ClientValidationEnabled和UnobtrusiveJavaScriptEnabled appSettings,但是当我提交具有不显眼的验证数据属性的表单时,即使它无效也会提交.出现验证消息,但表单仍然提交.
当然,我的浏览器启用了JavaScript.
我有一个包含一些文本框的表单,当文本框不包含有效值时,我收到错误消息,但文本框颜色不会更改为红色。
这就是我所拥有的
模型
public class AddCompany
{
public int Id { get; set; }
[Required(ErrorMessage = "*Name is required")]
public string Name { get; set; }
[Required(ErrorMessage = "*Address is required")]
[RegularExpression(@"^\(?([0-9]{4})\)?([A-Z]{2})",ErrorMessage = "*Not a valid Zip Code, Must be in format 1234AB")]
public string Address { get; set; }
[Required(ErrorMessage = "*Phone Number is required")]
[DataType(DataType.PhoneNumber)]
[RegularExpression(@"^\(?([0-9]{10})", ErrorMessage = "*Not a valid number, must be 10 numbers")]
public string Phone { get; set; }
[DataType(DataType.DateTime)]
public DateTime DateTimeAdded { …Run Code Online (Sandbox Code Playgroud) css asp.net-mvc jquery-validate unobtrusive-validation asp.net-mvc-4
我的 ASP.NET MVC 项目中有一个自定义的不显眼的验证器。我在特定属性上允许该属性的多个实例。一切似乎都正确渲染。属性的每个实例都包含附加到它的另一个小写字母。因此,当它呈现时,它可能类似于data-val-myvalidatora或data-val-myvalidatorb。
在客户端,我选择了所有希望添加不显眼的验证器的输入,获取属性,检查额外的小写字母,而不是为每个实例添加新方法和适配器。
如果我运行 F12,我可以看到如果我检查$.validator.methods,我的方法被添加。但是,如果我输入应该失败的数据并点击表单的提交按钮,我的验证器不会验证。我的验证方法是在一个独立的函数中。如果我添加断点,则不会命中。
我能做些什么来确保方法连接正确?
我注意到的另一个问题是,我在属性级别有一个字典来确定将属性添加到 HTML 输入元素的次数。但是,在每次后续回发时,字典都不会重置。我的猜测是我应该覆盖其他一些方法,但我无法确定它是哪个。
我正在按钮点击加载部分视图
function loadview(ele) {
if (ele == 'account') {
$('#updateprofile').load('@Url.Action("UpdateProfile", "Account")');
$.validator.unobtrusive.parse($("#updateprofile"));
}
if (ele == 'password') {
$('#changepassword').load('@Url.Action("ChangePassword", "Account")');
$.validator.unobtrusive.parse($("#changepassword"));
}
}
Run Code Online (Sandbox Code Playgroud)
验证不适用于ajax请求加载的部分视图.但它适用于@Html.Partial("ChangePassword", Model.changepassword)
任何帮助;
我对regexp真的很不好,我想要的是一个不匹配任何html标记(用于用户输入验证)的regexp。
我想要的是负面的:
<[^>]+>
Run Code Online (Sandbox Code Playgroud)
我现在有的是
public class MessageViewModel
{
[Required]
[RegularExpression(@"<[^>]+>", ErrorMessage = "No html tags allowed")]
public string UserName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
但这与我想要的相反-只能使用html标签的用户名
我搜索过类似的问题并没有找到任何快乐.验证在send函数中的逻辑方面有效,但验证元素后面的范围在无效时不显示错误消息.我甚至试过传递errorPlacement,但唯一有效的是如果我特意设置它就像这样
$("#msgvalid").text($("#msg").attr("data-val-required"));
Run Code Online (Sandbox Code Playgroud)
相关的HTML是
<form id="frmSend" style="margin-top:15px">
Add Comment:
<div>
<textarea id="msg" data-val="true" data-val-required="The comment cannot be blank." placeholder="Enter comment here" style="height:50px;width:300px"></textarea>
<span id="msgvalid" class="field-validation-valid text-danger" data-valmsg-for="msg" data-valmsg-replace="true"></span>
</div>
<button type="button" onclick="send();" class="btn-default" style="margin-top:10px">Send Comment</button>
</form>
<script src="/Scripts/jquery-1.10.2.js"></script>
<script src="/Scripts/bootstrap.js"></script>
<script src="/Scripts/respond.js"></script>
<script src="/Scripts/jquery.validate.js"></script>
<script src="/Scripts/jquery.validate.unobtrusive.js"></script>
Run Code Online (Sandbox Code Playgroud)
和相关的JavaScript是
<script type="text/javascript">
function send() {
$("#frmSend").validate();
if (!$("#frmSend").valid()) { return false; }
alert("Would send");
}
</script>
Run Code Online (Sandbox Code Playgroud) 我的页面的ViewModel中有一个DateTime属性.我想知道是否有内置的检查用户输入有效日期的方法.
以下是我当前代码的样子,截至目前,它不会自动确保用户输入有效日期(只需要验证):
ViewModel属性:
[Required]
[DataType(DataType.Date)]
public DateTime MyDate{ get; set; }
Run Code Online (Sandbox Code Playgroud)
Razor MVC6观点:
<label asp-for="MyDate" class="control-label"></label>
<input asp-for="MyDate" class="form-control" />
<span asp-validation-for="MyDate" class="text-danger" />
Run Code Online (Sandbox Code Playgroud) c# asp.net asp.net-mvc data-annotations unobtrusive-validation
我正在使用带有不显眼验证的 Asp.Net Core MVC。我有一个表单,它允许为子集合动态添加输入元素,我想在客户端验证中包含这些元素。我已经看到了一些以前的解决方案,例如将 jQuery 验证器规则添加到 ASP 中动态创建的元素,但客户端验证仍然没有发生。
这是我的代码。首先,当单击按钮时,将克隆一个 html 块并将其附加到表单列表中。
<li class="newVideoRow well-sm">
<div>
<input type="hidden" name="Videos.Index" value="#" />
<label>Video Title:</label>
<input name="Videos[#].VideoTitle" class="videoTitle form-control inline" placeholder="Enter a short title for this video" value="" />
</div>
<div>
<label>Video Link:</label>
<input name="Videos[#].VideoUri" type="url" class="videoUri form-control inline" value="http://" />
</div>
</li>
Run Code Online (Sandbox Code Playgroud)
然后,克隆列表项元素的 jQuery 操作 [#] 索引添加验证属性,并可能重新解析不显眼的验证器。
$('#addNewVideo').click(function(){
var nr = $('.newVideoRow').clone();
nr.removeClass('newVideoRow').addClass('videoRow');
var index = (new Date).getTime();
$(nr).find('div input').each(function(divIndex, divElement){
$(divElement).attr('name', $(divElement).attr('name').replace('#', index));
var inputName = $(divElement).attr('name');
if ($(divElement).attr('type') …Run Code Online (Sandbox Code Playgroud) 注意:这与 .NET Core v2.0 有关。您可能会找到相关帖子,但它们没有解决我面临的问题。
我正在使用以下代码应用Unobtrusive Client 端验证:
<form asp-route-returnurl="@ViewData["ReturnUrl"]" method="post" onsubmit="showPleaseWait()" >
<div asp-validation-summary="All" class="text-danger"></div>
<div class="form-group">
<label asp-for="Username" class="control-label"></label>
<input asp-for="Username" class="form-control" placeholder="Username" />
<span asp-validation-for="Username" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Password" class="control-label"></label>
<input asp-for="Password" value="" class="form-control" placeholder="Password" />
<span asp-validation-for="Password" class="text-danger"></span>
</div>
<div class="form-group">
<button type="submit" class="btn btn-success btn-lg" style="margin:auto;display:block">Log in</button>
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
好消息是它在客户端执行验证。
但是,form.onsubmit即使验证失败,也会触发事件。结果我的showPleaseWait方法被调用。我认为不应该调用它,因为由于验证失败,表单尚未提交。
下面是模型:
public class LoginViewModel
{
[Required]
public string Username { get; set; }
[Required]
[DataType(DataType.Password)]
public …Run Code Online (Sandbox Code Playgroud) asp.net-mvc ×5
jquery ×4
c# ×3
asp.net ×2
asp.net-core ×1
backbone.js ×1
css ×1
javascript ×1
regex ×1
validation ×1