2015-05-12 5 views
0

Привет, я создаю форму предварительного поиска, где Ajax.Beginform вызывается из jquery с событием .submit(), Ajax.Beginform возвращает partialView и обновляет div на странице , Теперь, когда я нажимаю кнопку поиска в первый раз, все работает нормально, и страница обновляется правильно, но когда я пытаюсь снова нажать ее, форма никогда не отправляется, и действие контроллера никогда не вызывается. Когда я проверил поджигатель я нашел эту ошибку, показывая в консоли каждый раз, когда я нажмите кнопку поиска:Ajax.Beginform отправляет только один раз mvc

TypeError: $.validator.methods[method] is undefined 


    result = $.validator.methods[ method ].call(this, val, element, rule.parameters... 

И это мой код:

Аякса beginfirm из Вида:

 @using (Ajax.BeginForm("AdvancedSearch", null, new AjaxOptions { UpdateTargetId = "searchResults", InsertionMode = InsertionMode.Replace }, new { id = "advancedSearchForm"})) 

функция JQuery:

function submitAdvancedSearch() {  
    if ($("#Name").val().trim() == "" && $("#LastName").val().trim() == "" && $("#Company").val().trim() == "") { 
      $("#resultError").text("Enter at least one search criteria"); 
    } 
    else { 
     $("#resultError").text(""); 
     $("#advancedSearchForm").submit(); 
     $("#advancedClientsSearch").prop("hidden", false); 
    } 
} 

И это кнопка:

<input type="button" value="Search" class="btn btn-primary" onclick="submitAdvancedSearch()" /> 

Это узелок пакеты:

   bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
        "~/Scripts/jquery-{version}.js", 
        "~/Scripts/jquery-ui-{version}.js", 
        "~/Scripts/jquery.unobtrusive-ajax.js", 
        "~/Scripts/DataTables/jquery.dataTables.js", 
        "~/Scripts/DataTables/jquery.dataTables.min.js")); 

       bundles.Add(new ScriptBundle("~/bundles/jqueryval").Include(
        "~/Scripts/jquery.validate.js", 
        "~/Scripts/jquery.validate.unobtrusive.js", 
        "~/Scripts/jquery.validate*")); 

NB: я использую MVC5 и JQuery JavaScript библиотеки v2.1.3

+0

Если вы используете 'Ajax.BeginForm()', то в чем смысл скрипта? Сделайте кнопку 'type =" submit "и удалите свой скрипт. –

+0

Нет, этот код усечен. Я делаю некоторые проверки полей перед отправкой формы. –

+0

Затем покажите свой реальный код. –

ответ

0

хорошо я узнал, что это был я установил некоторые правила валидации, которые влияют на функциональные возможности, как только я удалил их все работает отлично теперь

 $("#ClientName").rules("add", { 
    required: true, 
    messages: { 
     required: "Client Name can not be empty." 
    } 
}); 

$("#ClientLastName").rules("add", { 
    required: true, 
    messages: { 
     required: "Client Last Name can not be empty." 
    } 
}); 

$("#ClientCompanyName").rules("add", { 
    required: true, 
    messages: { 
     required: "Company Name can not be empty." 
    } 
}); 

я использовать их для другой страницы, но MVC использует по умолчанию именования, так что я имел своего рода конфликт.

+0

, вот что я думал;) –

0

Если вам не нужно автоматическое подтверждение затем удалить «~/связки/jqueryval "расслоение.

+0

ia m, используя автоматическую проверку на других страницах. но я включаю их на главную страницу, поэтому я не буду включать их на каждую страницу –

Смежные вопросы