3

我有一个需要验证的表单,我还需要在不刷新页面的情况下提交它。我能够获得一个表单来验证和提交,但页面刷新了。然后我能够获得一个无需提交的表单,但我无法进行验证。

我在这里查看了大量的教程和帖子,我觉得这是正确的整体格式......我只是确定我错过了一些东西。

任何帮助将不胜感激!

这是我的脚本:

$(document).ready(function(){
            $("#addstudent").validate({
                debug: false,
                rules: {
                    studentid: "required",
                    teacher: "required",
                    assignment: "required",
                    date: "required",
                },
                messages: {
                    studentid: "Please enter the student's ID number.",
                    teacher: "Please enter your name.",
                    assignment: "Please select a tutoring assignment.",
                    date: "Please select a day.",
                },                 
                submitHandler: function(form) {

          $.ajax({
              url: 'add.php',
              type: 'POST',
              data: $("form.addstudent").serialize(),         
              success: function() {
            $("#studentid").val(""), $('#studentid').focus(), $('#results').load('addresults.php', function(){
                });

              }
          });

          return false;
       }
    });
    });

这是我的表单的代码:

<form name="addstudent" id="addstudent" action="" method="post">

    <fieldset><legend>Add student to tutoring list</legend>
    <div><label for="studentid">ID number</label><input type="text" name="studentid" id="studentid"></div>

    <div><label for="day">Date</label><select name="date" id="date">
    <option value="">Please select a day</option>
    <option value="mon">Monday <? echo $monday; ?></option>
    <option value="tue">Tuesday <? echo $tuesday; ?></option>
    <option value="wed">Wednesday <? echo $wednesday; ?></option>
    <option value="thu">Thursday <? echo $thursday; ?></option>
    <option value="fri">Friday <? echo $friday; ?></option>
    </select></div>

    <div><label for="assignment">Tutoring assignment</label><select name="assignment" id="assignment">
    <option value="">Please select an assignment</option>
    <option value="att">Activity Time</option>
    <option value="acc">ACC</option>
    <option value="tech">ACC Tech </option>
    <option value="ast">After School</option>
    </select></div>

    <div><label for="teacher">Assigning teacher</label><input type="text" name="teacher" id="teacher"></div>

    <input type="submit" name="submit" value="submit">
    </fieldset>
    </form>

编辑:第一次编辑(现已删除)极大地改变了问题。对造成的任何挫折表示歉意。下面选择的答案本身就解决了这种形式的问题。

4

3 回答 3

1

你和 混在一起classid。你的表格是:

<form name="addstudent" id="addstudent" action="" method="post">

但是您通过以下方式定位它class

data: $("form.addstudent").serialize(),

什么时候应该针对id

data: $("form#addstudent").serialize(),

或更简洁地说:

data: $("#addstudent").serialize(),

工作演示:

http://jsfiddle.net/5UqRm/2/

请注意,没有什么是令人耳目一新的。

于 2012-12-20T22:16:41.407 回答
0

像以前一样设置表单规则和验证,但不包括 submitHandler。我并不是说它有什么问题,但这是我知道如何做你想做的事情的方法:

$("form.addstudent").submit(HandleSubmit);
    function HandleSubmit(e) {
    e.preventDefault();
    $.ajax({
        url: 'add.php',
        type: 'POST',
        data: $("form.addstudent").serialize(),
        success: function () {
            $("#studentid").val(""), $('#studentid').focus(), $('#results').load('addresults.php', function () {
            });

        }
    });
}

这是小提琴

于 2012-12-20T22:10:26.677 回答
0

我试过你的代码,它工作正常,只有一个修改:

data: $("#addstudent").serialize()

不管你有没有,都return false没有关系。

我不知道你想在你的 submitHandler 的 ajax 成功处理程序中实现什么:

`$('#results').load('addresults.php', function(){});`

为什么不回显 add.php 的一些输出并通过添加.done(function(data){}到您的$.ajax({})?

...您的示例不包含该#results元素,所以这可能导致您的刷新?例如,如果你有<body id="results">:-) !!

于 2012-12-20T22:22:28.203 回答