一次提交后,Jquery表格消失

时间:2012-06-28 13:37:31

标签: jquery jquery-mobile jqueryform

我有一种情况,即每个表单提交一次后,我页面上的表单就会消失。例如,登录提示(使用Jquery Mobile)显示用户名和密码,对话框正常显示,输入处理和验证,成功登录后显示主页面。但是,如果我注销然后再次尝试重新登录,则仅显示页眉。输入字段和标签不存在。

我有另一个页面,其中有一个输入字段,输入文本,进行$ .post调用,返回HTML并使用$('#results')更新元素结果。 html(dataReceived)函数调用。

显示结果时,表单似乎消失了。这是页面文字:

<div data-role="page" id="Search" data-title="Search">
<div data-role="header" data-theme="e">
<h1>Search</h1>                
</div>
<div data-role="content">                
<form name="SearchForm" action="search.php">
SSN: <input type=number name="snum" size="9" value=""><br>
<input id="SearchButton" type="submit" value="Begin Search" data-inline="true">
</form>
<div id=SearchResults></div>
</div><!-- /content -->
</div><!-- /Search -->

我拦截了表单的提交事件并在其他地方处理它。在$ .post AJAX调用的回调函数中设置div内容的代码是:

$('#SearchResults').html(dataReceived);

一般信息:jquery和jquery mobile的最新稳定版本。这是一个多页文件。没有外部页面被调用。一切都是通过$ .post调用完成的。登录表单不会更新任何HTML,它只是接收用户的ID并将其存储在变量中。

任何帮助将不胜感激。谷歌并不是我的朋友。

修改后显示表单提交代码:

$(document).ready(function() {
        $('form').submit(function(event) {
                event.preventDefault();
                var thisForm=$(this);
                var formUrl=thisForm.attr('action');
                var formName=thisForm.attr('name');
                var dataToSend=thisForm.serialize();
                var callBack=function(dataReceived) {
                        thisForm.hide();
                        switch(formName) {
                            case 'loginForm':
                            if (dataReceived.length>0 && parseInt(dataReceived)>0) {
                                   loggingIn=0;
                                   userId=parseInt(dataReceived);
                                   $.mobile.changePage("#home");
                                   break;
                            }
                            thisForm.show();
                            break;

                            case 'SearchForm':
                                    $('#SearchResults').html(dataReceived);
                                    break;
                        }
                };
                dataToSend += '&seid=' + SESSID;
                var rtnType="html";
                switch(formName) {
                        case "loginForm":
                                rtnType="text";
                                break;
                        case 'SearchForm':
                                break;
                }
                $.post(formUrl,dataToSend,callBack,rtnType);
                return false;
        });

1 个答案:

答案 0 :(得分:1)

您正在隐藏提交回调函数中的表单:

thisForm.hide();

对于“loginForm”,您正在调用show(),但对于“SearchForm”,您不是在窗体上调用show():

            var callBack=function(dataReceived) {
                    thisForm.hide();
                    switch(formName) {
                        case 'loginForm':
                          if (dataReceived.length>0 && parseInt(dataReceived)>0) {
                               loggingIn=0;
                               userId=parseInt(dataReceived);
                               $.mobile.changePage("#home");
                               break;
                          }
                          thisForm.show();
                          break;
                        case 'SearchForm':
                          $('#SearchResults').html(dataReceived);
                          break;
                    }
            };