php - jquery post() 不以动态形式工作

标签 php javascript jquery ajax post

我正在开发一个从数据库动态生成的简单表单,我想出了这个简单的表单只是为了尝试一下,但显然工作正常,但在第二次提交同一个表单后有点保留旧的值o.O

<script src="jquery-1.4.4.js" type="text/javascript"></script>

<script type="text/javascript">


  function init(items,userId) {  
    var inputdata = $("#qty_"+items).val();
    var userId = userId;
    alert(inputdata);
    $("#form_"+items).live("submit", function() {
      $.post("test_query.php", { value:inputdata, userId:userId }, 
        function(data){
          $('#results').empty();
          alert(data);
        });

       return false;

      });

    };

</script>


<?php

for($i=1; $i <2; $i ++)
{
echo "
    <div>
    <form id='form_".$i."'>
        <input id='qty_".$i."' type='text' autocomplete='OFF' />
        <input type=\"submit\" value=\"submit\" onclick=\"init(".$i.",2)\"/>
    </form>
    <script>

    </script>
    </div>
";
}
?>
</div>

更新:忘了提及,这个想法是在提交时不刷新页面。表单 name/id 是动态生成的。

最佳答案

您试图以两种方式做同样的事情 - 管理表单的“提交”事件处理程序,但这并不正确。您正在生成表单 HTML,以便“提交”按钮通过“单击”处理程序调用您的“init”例程。该代码有什么作用?它为表单的“提交”事件设置另一个事件处理程序。该处理程序将始终使用第一次调用时传递的参数。

您应该坚持使用“onsubmit”处理程序,或者(更好)按照您的直觉使用 jQuery“live”或“delegate”工具来设置您的处理程序。然后你的初始化代码将进入 jQuery“就绪”处理程序,并且你将完全省略“onsubmit”内容:

$(function() {
  $('body').delegate('form', 'submit', function() {
      $.post("test_query.php", { value: $(this).find('input:text').val(), userId: 2 }, 
        function(data){
            $('#results').empty();
            alert(data);
            $('#results').html(data);
         }
       );
   });

   return false;
});

关于php - jquery post() 不以动态形式工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4927999/

相关文章:

PHP fsockopen() cookie

javascript - 同时使用 2 个函数来验证表单

javascript - 如何从 json 文件加载多个标记?

PHP HTML 显示按钮属性

php - 无法使用 PHP 将数据插入我的 MySQL 数据库

php - 为什么有些人在 if 语句中将值放在变量之前?

asp.net - 使用 SquishIt 在母版页和 View 页面中组合 CSS 和 JS

javascript - D3 中多线图的工具提示

javascript - 无法向 li 添加文本输入

javascript - HTML 表格在填充所有当前文本框并选择选择之前不会添加行