我正在使用ASP.Net MVC3
,更简单的方法来使用客户端验证将启用jquery.validate.unobtrusive
.对于那些来自服务器的东西,一切正常.
但是当我尝试用javascript注入一些新的"输入"时,我知道我需要调用$.validator.unobtrusive.parse()
来重新绑定验证.但是,所有这些动态注入的字段都不起作用.
更糟糕的是,我尝试手动绑定使用jquery.validate
它也无法正常工作.有什么想法吗?
好的,这是交易,我在SO上看到了一些关于这个问题的帖子,但没有什么对我有用.
基本上,我选择从部分视图加载的下拉列表,我试图根据先前选择的下拉列表过滤每个后续下拉列表的内容.
如果我只是调用div容器中的局部视图,并加载页面,则数据注释的验证工作正常,主要是必需属性.
但是,如果我尝试通过这里设置的AJAX加载相同的部分,则必需的验证不起作用,任何人都可以在此之后发布表单和KABOOM.
我发现有人说在Success回调中你需要让客户端验证器重新分析表单,我正在尝试,但它似乎没有工作.
我有一个看起来像这样的视图......
@model Area51.Models.Workflow.AddReportableItemToBatchActionModel
@{
ViewBag.Title = "Add Reportable Item to Batch";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<script type="text/javascript">
$(function () {
var fadeDelay = 150;
$(".jqDatePicker").datepicker({
dateFormat: 'm/d/yy',
onSelect: function (date) {
$("#categoryContainer").show(fadeDelay);
}
});
$('#Category').change(function () {
RetrieveItemsForCategory();
$("#itemContainer").show(100);
});
$('#Item').live('change', function () {
RenderPartialForUOMByItem();
});
function RetrieveItemsForCategory() {
var category = $("#Category :selected").val();
$.ajax({
type: "POST",
url: '@Url.Action("RenderPartialForLocationItemsByCategory","BatchWorkflow")',
data: 'category=' + category,
success: function (result) {
$("#itemContainer").html(result.toString());
$("#itemContainer").show(100);
RebindValidation();
},
error: function …
Run Code Online (Sandbox Code Playgroud) 这是我的问题......
我有一个页面,最初呈现并显示使用Ajax.BeginForm创建的AJAX表单.输入一些标准并发布AJAX表单.返回部分视图,其中包含使用Html.BeginForm创建的HTML表单.
到目前为止一切都那么好......到目前为止一切都运行良好.我不引人注目的客户端验证对从局部视图创建的元素非常有用.当我现在尝试创建一些动态输入元素(通过jQuery)并将它们插入/附加到由局部视图创建的表单时,我的问题就出现了.我无法在动态创建的元素上进行任何不显眼的客户端验证.
我尝试过: - 克隆现有元素,修改它们的ID /名称并将它们附加到DOM中. - 创建html字符串并将其插入DOM中.
每次插入动态元素后,我都尝试调用: - $ .validator.unobtrusive.parseElement()[new element] - $ .validator.unobtrusive.parse()[new container,document,etc] - $ .validator.unobtrusive .parseDynamicContent()[插件]
这是jQuery代码的详细信息......
$("#insert").live("click", function () {
var html = "<input type='text' value='' name='CustomerNominationVolume' id='CustomerNominationVolume' data-val-required='The Nomination (Dth) field is required.' data-val-number='The field Nomination (Dth) must be a number.' data-val='true' /><br />"
html += "<span class='field-validation-valid' data-valmsg-replace='true' data-valmsg-for='CustomerNominationVolume'></span>";
$("#new").html(html);
});
$("#parse").live("click", function () {
$.validator.unobtrusive.parse(document);
});
$("#validate").live("click", function () {
var element = $("#CustomerNominationVolume");
var form = $(element).first().closest('form');
form.validate().element(element);
}); …
Run Code Online (Sandbox Code Playgroud)