提交后表单不为空字段

Posted

技术标签:

【中文标题】提交后表单不为空字段【英文标题】:Form doesn't empty fields after submit 【发布时间】:2014-07-24 21:42:35 【问题描述】:

目前我正在开发一个项目,该项目有一个连接到外部数据库的表单。 首先我做了一个例子,只是为了测试它是否有效。这很好用。

但是当我尝试实现它时,表单不再为空,而示例确实清空了字段。我的代码完全一样,所以我不明白出了什么问题。唯一的区别是一个文件在 jquery-mobile/phonegap 文件夹中,另一个在我的 htdocs 中。

(确实有效,唯一没有做的是提交后清空表单输入字段,这让用户感到困惑)

这是我的代码:

html

    <link rel="stylesheet" href="themes/jquery.mobile.icons.min.css" />
    <link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.2/jquery.mobile.structure-1.4.2.min.css" />
    <script src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
    <script src="http://code.jquery.com/mobile/1.4.2/jquery.mobile-1.4.2.min.js"></script>
    <script type="text/javascript" src="js/demo.js"></script>
    <script>
        function onBodyLoad()      
            document.addEventListener("deviceready",onDeviceReady,false);
        
    </script>

</head>
<body onload="onBodyLoad()">

<div data-role="page" id="page7" class="pagina">
                <div data-role="header">
                   <h1>Name</h1>
                </div><!-- /header -->

            <div data-role="content" id="content">
                <div id="weekoverzicht">
                <form id="overzicht" method="post" onsubmit="return infoOverzicht()">
                    <label for="fruit">
                        <b>Fruit</b>
                        <input type="text" id="fruit" name="fruit">
                    </label>

                    <label for="groente">
                        <b>Groente</b>
                        <input type="text" id="groente" name="groente">
                    </label>

                    <label for="beweging">
                        <b>Beweging</b>
                        <input type="text" id="beweging" name="beweging">
                    </label>

                    <label for="duur">
                        <b>Duur</b>
                        <input type="text" id="duur" name="duur">
                    </label>

                    <input type="submit" value="Save">
                </form>
                </div>
                <div data-role="content">
                    <a data-role="button" data-transition="fade" href="#" id="button"> Data ophalen </a>
                        <table data-role="table" data-mode="columntoggle" class="ui-responsive" id="myTable">
                           <thead>
                            <tr>
                          <th data-priority="1">Fruit</th>
                              <th data-priority="1">Groente</th>
                              <th data-priority="1">Beweging</th>                             
                            </tr>
                          </thead>
                          <tbody data-role='listview' data-theme='c' id='mylist'></tbody>
                          </table>

                    <p id="showData"></p>
                </div>
            </div>
            <div data-role="footer" style="text-align:center;" data-position="fixed">
                <div data-role="navbar">
                      <ul>
                        <li><a href="index.html" data-icon="home">Home</a></li>
                        <li><a href="test.html" data-icon="plus">Test</a></li>
                        <li><a href="doel.html" data-icon="star">Doel</a></li>
                        <li><a href="score.html" data-icon="check">Score</a></li>
                      </ul>
                </div>                
            </div><!-- /footer -->
        </div>
    </body>
</html>

js文件:

    var url = "http://example.com/";
    console.log("first page initialized");  

    $.ajax(
        type: "POST",
        url: url + "complex.php",
        cache: "false",
        dataType: "json",
        success: function(phpData) 
        console.log("Complex: " + phpData);

            $("#showData2").append("<b>" + phpData.comments[0].sport + "</b>");

            $.each(phpData.comments, function(index, berichtje)
                console.log(berichtje);
                $("#mylist").append( 
                    "<tr>" + 
                    "<td>" + berichtje.fruit + "</td>" +
                    "<td>" + berichtje.groente + "</td>" +
                    "<td>" + berichtje.beweging + "</td>" + "</tr>"
                );
            );

            $('#mylist').listview('refresh');

            ,  
         error: errorHandling                   
    ); 

function infoOverzicht()
                var data = $('form#overzicht').serialize();
                $('form#overzicht').unbind('submit');              
                $.ajax(
                    url: "http://example.com/save.php",
                    type: 'POST',
                    data: data,
                    beforeSend: function() 
                    ,
                        success: function(data, textStatus, xhr) 
                    ,
                        error: function(xhr, textStatus, errorThrown) 
                    
                );
                return false;
            

function errorHandling()

    console.log('er gaat iets fout');


我尝试了这样的解决方案,但无济于事: Clear form after submission with jQuery

有谁知道我做错了什么? 大概是个傻小子,不过我没找到,哈哈。

【问题讨论】:

【参考方案1】:

我通过在提交表单后重定向到另一个页面“解决”了我的问题(申请需要,不是最好的解决方案,但它有效).. :) 感谢您的帮助!

【讨论】:

【参考方案2】:

这里的问题是你的success() 方法是空的。如果你不告诉它做任何事情,它就不会做任何事情。

如果您确实尝试了Clear form after submission with jQuery 中列出的解决方案,那么您应该展示您的工作,以便我们可以看到您尝试做什么。现在你的代码甚至会尝试做你想做的事,所以它肯定不会。 :)

谷歌搜索“使用 jQuery 重置表单”得到了一些结果。 This one 不错。

$("#overzicht").trigger('reset'); //jquery
document.getElementById("overzicht").reset(); //native JS

选择其中一个,将其放入您的success() ,您应该没问题。

【讨论】:

我是这样使用的:success: function(data, textStatus, xhr) $("#overzicht").trigger('reset'); ,但它不起作用。而我的另一个 html 文件(具有完全相同的 html 和 jquery 代码)工作正常...... 来吧,伙计,帮帮我。 “不起作用”是含糊的。你得到一个PHP错误吗?回调一定会触发吗?您是否进行了任何调试,例如成功放置了 console.log() ?网络请求失败了吗? jQuery 可以正确找到 $('#overzicht') 吗?重置事件是否触发?【参考方案3】:

也可以试试:

$('form#overzicht input').val('');

【讨论】:

以上是关于提交后表单不为空字段的主要内容,如果未能解决你的问题,请参考以下文章

仅在SELECT字段不为空时显示“提交”按钮

验证电子邮件字段并确保不为空

如何验证jsp表单提交不为空

提交后如何使表单域为空

iview表单验证一直提示为空的几个原因?

Symfony 表单验证:如果另一个字段不为空,则需要字段