我正在处理一个从数据库动态生成的简单表单,我想出了这个简单的表单只是为了尝试它,但显然工作正常,但在提交到同一表单后第二次有点保持旧价值oO
<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>
更新:忘记提及的想法是在提交时不刷新页面。表单名称/ id是动态生成的。
答案 0 :(得分:0)
你正在尝试做同样的事情 - 管理你的表单的“提交”事件处理程序 - 有两种方式,而且它确实不对。您正在生成表单HTML,以便“提交”按钮通过“单击”处理程序调用您的“init”例程。那段代码做了什么?它为表单中的“提交”事件设置另一个事件处理程序。该处理程序将始终使用第一次调用时传递的参数。
你应该 坚持使用“onsubmit”处理程序,或者(更好)与你的直觉一起使用jQuery“live”或“delegate”工具来设置你的处理程序。然后你的初始化代码将进入一个jQuery“ready”处理程序,你完全不用“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;
});