2013-07-17 4 views
0

У меня есть специальный валидатор, определенный с помощью jQuery, который проверяет, чтобы необходимые поля были заполнены до того, как HTTPPost имеет место. Мои скрипты являются:jQuery validation not stopping postback

<script> 
$(document).ready(function() { 
    $('#ContentProperties').hide(); 
    $('#FileSubmit').hide(); 
}); 

$(function() { 
    $("input:file").change(function() { 
     var fileName = $(this).val(); 
     if(fileName != null) 
      $('#FileSubmit').show(); 
      $('#ContentProperties').show(); 
      alert("File successfully chosen please enter required metadata below"); 
    }); 
}); 

$(document).ready(function() { 
    $("#FileSubmit").click(function() { 
     var name = document.getElementById("name").value; 
     var author = document.getElementById("author").value; 
     var description = document.getElementById("description").value; 
     var uploadDate = document.getElementById("uploaddate").value; 
     var expiryDate = document.getElementById("expirydate").value; 
     var contentType = document.getElementById("contenttypeid").value; 
     var alertString = ""; 

     if (name.length == 0) { 
      alertString += "NAME: You must enter a name for your content!\n" 
     } 

     if (author.length < 6) { 
      alertString += "AUTHOR: You must enter at least 6 characters for author!\n" 
     } 

     if (description.length < 20) { 
      alertString += "DESCRIPTION: You must enter a valid description of at least 20 characters !\n" 
     } 

     if (uploadDate.length < 8 || uploadDate.length > 10) { 
      alertString += "UPLOAD DATE: Date must be entered in format 01/01/2013 or 1/1/2013\n" 
     } 

     if (expiryDate.length < 8 || expiryDate.length > 10) { 
      alertString += "EXPIRY DATE: Date must be entered in format 01/01/2013 or 1/1/2013\n" 
     } 

     if (alertString.length > 0) { 
      alert(alertString) 
      event.cancelBubble = true; 
      event.returnValue = false; 
      event.preventDefault(); 
      event.stopPropagation(); 
      return false; 
     } 
    }); 
}); 

При нажатии на кнопку отправки с проверенными полей оставить это поле пустым, правильно отображать сообщения об ошибках, но не в состоянии остановить этот пост. Как это сделать при использовании jQuery? Раньше я использовал JavaScript только, и я был в состоянии остановить барботирования с помощью:

event.cancelBubble = true; 
event.returnValue = false; 
event.preventDefault(); 
event.stopPropagation(); 

ответ

1

Вы не определили event:

$("#FileSubmit").click(function (event) { 

Хотя я обычно использую e как конвенции:

$("#FileSubmit").click(function (e) { 
    e.preventDefault(); 
}); 

Боковое примечание: я бы изменил это, чтобы приложить обработчик к форме submit, а не кнопку отправки. Вы можете отправить форму, нажав кнопку ввода, и она пропустит ваш обработчик кликов.

+0

Спасибо за это очень высокую оценку. Будет ли прикрепляться к представлению будет $ ("# FileSubmit"). Onsubmit? – Jay

+1

Да, я думаю, что точным синтаксисом будет '$ ('# MyForm'). Submit (function (e) {});' или '$ ('# MyForm'). On ('submit', function (e) {}); 'Обратите внимание, что вам нужно прикрепить событие к форме, а не к кнопке. –

1

Вы не ссылки на «событие» в вызове функции:

$("#FileSubmit").click(function (event) { ....