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