Jquery多表单
我是JQuery的新手,我不敢相信这是不可能的 我有多个动态创建的HTML表单。我使用JQuery从表单中捕获数据,但当我提交表单时,我只能访问上一个表单中的数据 这是我的密码:Jquery多表单,jquery,forms,Jquery,Forms,我是JQuery的新手,我不敢相信这是不可能的 我有多个动态创建的HTML表单。我使用JQuery从表单中捕获数据,但当我提交表单时,我只能访问上一个表单中的数据 这是我的密码: for($x=0; $x<10; $x++){ ?> <form method="POST" id="formid<? echo $x; ?>"> <textarea name="notes_text"><? echo $row[2
for($x=0; $x<10; $x++){
?>
<form method="POST" id="formid<? echo $x; ?>">
<textarea name="notes_text"><? echo $row[2]; ?></textarea></td>
<input type="hidden" value="<? echo $row[0]; ?>" name="notes_id" />
<input type="image" src="/images/edit-small.png" id="update-notes-submit" class="submit-img-sml"/>
</form>
<?
}
警报为我提供了正确的formid,以便正常工作
如果我提醒notes\u id或notes\u文本变量,我会得到“未定义”
我试过:
var notes_id=$('#formid1 input[name=notes_id]').val();
= undefined
var notes_id=$('#formid2 input[name=notes_id]').val();
= undefined
var notes_id=$('input[name=notes_id]').val();
= data from the last form that appears in my script
如何指定表单和变量。我不敢相信这是如此难以实现,也许这在JQuery中是不可能实现的,如果是这样的话,这是一个令人震惊的限制。您假设表单id是
formid1
,但我感觉提交的不是表单id。请尝试以下操作:
$("form").submit(function(){
var form =$(this);//this refers to the form
var notes_id=form.find('input[name=notes_id]').val();
var notes_text=form.find('textarea[name=notes_text]').val();
}
你是不是漏掉了引号
var notes_id=$('#formid1 input[name=notes_id]').val();
var notes_text=$('#formid1 textarea[name=notes_text]').val();
var notes_id=$('#formid1 input[name="notes_id"]').val();
var notes_text=$('#formid1 textarea[name="notes_text"]').val();
非常确定这些引用很重要。删除
之后的无关
。它与表单外部的匹配,因此表单元素也被终止。因此,元素不在表单中。看看inspector中的DOM,你会发现这是多么糟糕。好吧,所以经过大约8个小时的锤炼,我终于找到了答案
问题是由于表格标签位于错误的位置造成的。我使用的是这种格式:
<table>
<?
for($x=1; $x<=mysql_num_rows($notes); $x++){
$row=mysql_fetch_row($notes);
?>
<form id="form<? echo $x; ?>">
<tr>
<td width="150"><b>Text 1</b></td>
<td colpsan="3"><textarea name="txtarea">Some text</textarea></td>
</tr>
<input type="hidden" value="<? echo $row[0]; ?>" name="notes_id" />
</form>
<?
}
?>
</table>
我认为他和你一样,在他的语法中缺少了引号。他说,警报给了我正确的formid,这样才能起作用。
顺便说一句。虽然我认为你的建议可能仍然正确,但如果id是正确的,怎么可能是指错误的表单?@Leeish-我想他可能错过了在选择器中硬编码表单id的事实。。。页面上有10个表单,因此他的代码只适用于id为formid=1Ah的表单。。我在想他把formid硬编码在里面是为了测试。你可能是对的。我仍然对引号感到愤怒。建议的代码给出了相同的结果:未定义。我从相关表单中获得了正确的id,因为以下输出是正确的:alert($(this).closest(“表单”).attr('id');我只是不能限定一个表单id超过另一个!WTF,所以在使用这样的选择器时,引号并不重要。为什么不呢,是的。我是。我不喜欢事情以多种方式被接受,或者看起来不一致。让我想起了太多的PHP。在CSS中使用这种类型的选择器时需要引号吗?如果=
后面的值包含特殊字符,例如]
,则需要引号。我不知道的事情我不知道。为什么不能在提交中引用表单数据?是否可以执行以下操作:$(“表单”).submit(函数(数据)
其中数据是您试图通过选择器获取的值?在
之后有一个
。它与表单外部的
相匹配,因此表单元素也被终止。因此,
元素不在表单中。查看inspector中的DOM,您将看到表单元素有多混乱p这是。不要忘记将此问题或此问题的任何其他答案标记为“已接受”,请参阅以了解更多信息。:)
<table>
<?
for($x=1; $x<=mysql_num_rows($notes); $x++){
$row=mysql_fetch_row($notes);
?>
<form id="form<? echo $x; ?>">
<tr>
<td width="150"><b>Text 1</b></td>
<td colpsan="3"><textarea name="txtarea">Some text</textarea></td>
</tr>
<input type="hidden" value="<? echo $row[0]; ?>" name="notes_id" />
</form>
<?
}
?>
</table>
<?
for($x=1; $x<=mysql_num_rows($notes); $x++){
$row=mysql_fetch_row($notes);
?>
<table>
<form id="form<? echo $x; ?>">
<tr>
<td width="150"><b>Text 1</b></td>
<td colpsan="3"><textarea name="txtarea">Some text</textarea></td>
</tr>
<input type="hidden" value="<? echo $row[0]; ?>" name="notes_id" />
</form>
</table>
<?
}
?>