相关疑难解决方法(0)

jquery.validate.unobtrusive不使用动态注入元素

我正在使用ASP.Net MVC3,更简单的方法来使用客户端验证将启用jquery.validate.unobtrusive.对于那些来自服务器的东西,一切正常.

但是当我尝试用javascript注入一些新的"输入"时,我知道我需要调用$.validator.unobtrusive.parse()来重新绑定验证.但是,所有这些动态注入的字段都不起作用.

更糟糕的是,我尝试手动绑定使用jquery.validate它也无法正常工作.有什么想法吗?

jquery-validate unobtrusive-validation asp.net-mvc-3

98
推荐指数
6
解决办法
7万
查看次数

在Ajax调用之后,MVC3不引人注目的验证不起作用

好的,这是交易,我在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)

c# ajax asp.net-mvc unobtrusive-validation asp.net-mvc-3

36
推荐指数
3
解决办法
3万
查看次数

在使用MVC 3和jQuery进行AJAX和动态创建之后,元素未经过不显眼的验证

这是我的问题......

我有一个页面,最初呈现并显示使用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)

ajax unobtrusive-javascript dynamic-controls asp.net-mvc-3

2
推荐指数
1
解决办法
2749
查看次数