2014-02-20 3 views
0

Это довольно простая форма опроса; Я использую JQuery для условного отображения/скрытия полей на основе пользовательских настроек..submit() не работает с другой функцией jQuery?

//FORM CONDITIONALS Hides all the helpfulness radios and only shows them when "Yes" for a particular question is checked 
$("#datainp .occurrence").click(function() { 
    var nexttd = $(this).next('td'); 
    if ($(this).children("input:first").is(':checked')) { 
     $(nexttd).show(); 
     $(nexttd).children("input").removeAttr("checked"); 
    } else { 
     $(nexttd).hide(); 
    } 

У меня есть функция проверки на стороне клиента :.

//Client side validation and submissions 
$('#submit').click(function(e) { 

    e.preventDefault(); 

    var level = $('#Level').val(); 
    var schoolid = $('#school').val(); 

    if (!schoolid) { 
     alert("Please select a school!"); 
     return; 
    } 
    if (!level) { 
     alert("Please select a grade level!"); 
     return; 
    } 
    alert("foo"); 
    $('#frmTeacherEvalGuidance').submit(function() {alert("bar") }); 

}); 

Все работает КРОМЕ .submit() в конце моей проверки (предупреждения проверить). Является ли что-то в моей форме условным разделом, конфликтующим с .submit()? Когда я комментирую первый раздел javascript, форма отправляется, как и предполагалось. JsFiddle здесь: http://jsfiddle.net/r4Y4g/1/ (HTML, является немного неуклюжим, я знаю, но не мое, обновление старого проекта команда)

ответ

1

Вы должны использовать .stopPropagation() вместо .preventDefault()

Попробуйте это:

//Client side validation and submissions 
    $('#submit').click(function(e) { 

     e.stopPropagation(); 

     var level = $('#Level').val(); 
     var schoolid = $('#school').val(); 

     if (!schoolid) { 
      alert("Please select a school!"); 
      return false; 
     } 
     if (!level) { 
      alert("Please select a grade level!"); 
      return false; 
     } 

     return true; 
    }); 
+0

пожаров Уведомления «Foo», но до сих пор нет представления формы – WillardSolutions

+0

Я отредактировал мой ответ. Теперь у меня есть то, что вы говорите. http://jsfiddle.net/r4Y4g/1/ –

+0

@ChrisWillard посмотреть. ;) –

0

Вы можете добавить слушатель вместо:

$("#frmTeacherEvalGuidance").on("submit", function() { 
    alert("bar"); 
}); 
+0

Просто попробовал функцию перезаписи в качестве слушателя в представлении, как это было предложено, но это означает: 1) я теряю способность проверять (т.е. он представляет независимо от моих утверждений if); или 2) если я использую preventDefault, мне все равно придется использовать .submit() после моей проверки. В любом случае у меня все еще нет необходимых функций. – WillardSolutions

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