.submit()不能与其他jQuery函数一起使用?

时间:2014-02-20 20:12:32

标签: javascript jquery html dom

这是一个相当基本的调查表格;我正在使用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有点笨重,但不是我的;更新旧的团队项目)

2 个答案:

答案 0 :(得分: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;   
    });

答案 1 :(得分:0)

您可以改为添加一个监听器:

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