Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery多表单_Jquery_Forms - Fatal编程技术网

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

我是JQuery的新手,我不敢相信这是不可能的

我有多个动态创建的HTML表单。我使用JQuery从表单中捕获数据,但当我提交表单时,我只能访问上一个表单中的数据

这是我的密码:

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> 

      <?       

}

?>