2016-10-24 5 views
0

У меня есть форма Ajax в моем приложении MVC, которое проверяется с помощью проверки jquery. Первоначально проверка не работала, потому что поля даты, где в формате Великобритании, а не США (который по дизайну, поскольку я нахожусь в Великобритании), поэтому я добавил некоторый код, чтобы остановить это.Как включить корректную проверку jquery в форме Ajax MVC?

Jquery Validation Дата

$(function() { 
    $.validator.addMethod("date", function(value, element) { 
     var dateReg = /^\d{2}([./-])\d{2}\1\d{4}$/; 
     return value.match(dateReg); 
    }, "Invalid date"); 

    $('#form').validate({ 
     submitHandler: function(form) { 
      form.submit(); 
     } 
    }); 
}); 

код я добавил однако угоняет в form.submit, что означает форму АЯКС не вызвать это успех или недостаточность функции.

Ajax форма Код

@using (Ajax.BeginForm("Create", "Fixtures", new AjaxOptions 
{ 
    OnSuccess = "Success", 
    OnFailure = "Failure"  
}, new { @class = "standard-form", @Id = "form" })) 
{ 
    @Html.AntiForgeryToken() 
    @Html.ValidationSummary(true, "", new { @class = "text-danger" }) 
    ...Form fields etc... 
} 

Script

function Success() { 
    console.log("Success") 
} 
function Failure() { 
    console.log("Failure") 
} 

Весь путь это не doens't чувствовать себя чистым для меня, так что мой вопрос, как я проверить форма правильно (с использованием проверки jquery или альтернативы), но также сохранить успешные и неудачные функции моей формы ajax?

+0

Как насчет использования 'DataAnnotations' для проверки модели или просмотра модели и объединения ее с неуверенной проверкой jQuery? – Esen

+0

Ваше регулярное выражение не проверяет дату. Если вы хотите разрешить формат 'dd/MM/yyyy', вы можете посмотреть, используя [jquery globalize] (https://github.com/jquery/globalize), или если вы используете jQuery datepicker, а затем используйте его методы (см. [этот ответ] (http://stackoverflow.com/questions/27285458/jquery-ui-datepicker-and-mvc-view-model-type-datetime/27286969#27286969) для jQuery-ui datepicker). –

+0

В качестве альтернативы вы можете использовать скрипт в [этом ответе] (http://stackoverflow.com/questions/30594128/error-in-date-validation-mvc/30609111#30609111) –

ответ

0

Спасибо, в конце концов, и после небольшого поиска некоторых документов, которые вы упомянули, я обнаружил, что вы можете установить dateITA в true. Вот код для этого.

$("#form").validate({ 
     rules: { 
      dateITA: true 
     } 
    }) 

Этот подход очень хорошо подходит для моего приложения и означает, что я могу без проблем сохранить все варианты формы Ajax. Поскольку у меня только одна форма в моих взглядах, не нужно беспокоиться об использовании конфликтующих идентификаторов.