2014-09-18 2 views
0

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

Не удалось получить значение «Настройки» собственности: объект является нулевым или не определено

<form id="myForm" action=""> 

    <input type="text" id="input1" name="input1" /> 
    <input type="text" id="input2" name="input2" /> 

    <button id="submit" name="submit"> 
    </button> 

</form> 

<script type="text/javascript"> 

    $('#myForm').validate({ 

     rules: { 
      input1: "required", 
      input2: "required", 
      agree: "required" 
     }, 

     submitHandler: function (form) { 
      MyFunction(); // i somehow believe the problem could be here, i have added the code below 
     } 
    }); 

function MyFunction() { 

    var firstname = $('#input1').val(); 
    var lastname = $('#input2').val(); 

    $.ajax({ 
     type: "POST", 
     url: '@Url.Action("AddCustomer", "MyController")', 
     data: "{'FirstName': '" + firstname + "','LastName': '" + lastname + "'}", 
     dataType: 'text', 
     success: function (msg) { 

      $('#myDiv').html(msg); 
     }, 
     error: function (result) { 
      alert("Error"); 
     } 
    }); 

} 

</script>    

Главная Вид где называется частичный вид.

<div id="parentDiv"> 
    @Html.Action("ActionName", "ControllerName") //the action calls the Partial View 
</div> 

Функция работает нормально. Однако есть ли что-нибудь, что мне нужно добавить, чтобы проверка выполнялась во второй раз.

form прост с некоторыми текстовыми полями и кнопкой отправки. form находится внутри частичного представления, если это имеет значение.

Дайте мне знать, если мне нужно добавить HTML-метку. Хотя я думаю, что это как-то связано с сообщением AJAX.

+0

Эта ошибка возникает только при пустом текстовом поле? Эта проверка выполняется в режиме реального времени, во время вашего перевода? –

+0

проверка выполняется в первый раз, но как только я нажимаю кнопку отправки и добавляю данные через вызов ajax, а затем даже если я нажму на любое текстовое поле, я получу эту ошибку. – user2322507

+0

Да, пожалуйста, покажите разметку HTML. Вы всегда должны показывать достаточно кода, который воспроизводит проблему. – Sparky

ответ

1

Поскольку вы не перезагружаете страницу после отправки ajax, попробуйте использовать метод resetForm, предоставляемый плагином. Хотя, я бы ожидал, что это будет работать многократно, без необходимости сброса формы. Сообщение об ошибке также не имеет никакого смысла с тем, что вы показали нам до сих пор.

http://jqueryvalidation.org/Validator.resetForm/

Попробуйте где-нибудь, как в конце вашего ajaxsuccess функции ...

$('#myForm').validate().resetForm(); 

EDIT:

Используя свой код, я не могу воспроизвести проблема, которую вы описываете:

http://jsfiddle.net/quyzu00h/3/

+0

Я должен попробовать это, не так много в приведенной ссылке. мог бы объяснить, что он делает? – user2322507

+0

@ user2322507, он сбрасывает объект валидатора, как если бы страница была только что загружена ... удаляет любые сообщения об ошибках и т. Д. Однако он не уничтожит любые значения, которые вы, возможно, уже ввели в полях. – Sparky

+0

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

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