更新 - 因为我不清楚我的表情。将再试一次:
我有一个包含多个输入的表单,这些输入是动态创建的:
<form id="tellafriend_form" method="post" action="landingpage.aspx">
<!-- static example -->
<input type="text" id="my_example" name="my_example" value="" />
<!-- dynamic part -->
<xsl:for-each select="something">
<xsl:variable name="publicationId" select="@id"/>
<input type="text" id="{$publicationId}" name="{$publicationId}" value="" />
</xsl:for-each>
</form>
提交时如何使用xslt从输入中获取值?我可以从静态输入字段中获取它,但不能从动态字段中获取它,因为我不知道名称/ ID。
我知道所有$ publicationId都是一个大于2000但小于4000的整数。如果需要,它们很容易以某些文本作为前缀(如果数字单独存在问题)。
首选XSLT解决方案。或者使用jQuery,如果可以做到这一点(看到这个,这可能是另一个解决方案:Obtain form input fields using jQuery?)。
BR。安德斯
答案 0 :(得分:0)
landingpage.aspx
将无法识别相关的POST值,因为您事先不知道输入元素名称。
这表明您需要使用事先知道的其他数据来扩充名称。也就是说,在名称中添加额外信息,以便稍后检查。
一个很好的选择是以接收脚本能够(自动)将它们解释为数组的方式附加名称。这在接收脚本中更容易处理。取决于接收语言/框架允许的一种方式是:
<form id="tellafriend_form" method="post" action="landingpage.aspx">
<!-- static example -->
<input type="text" id="my_example" name="my_example" value="" />
<!-- dynamic part -->
<xsl:for-each select="something">
<xsl:variable name="publicationId" select="@id"/>
<input type="text" id="{$publicationId}" name="publication[{$publicationId}]" value="" />
</xsl:for-each>
</form>
尝试此操作并检查POST数据中的publication
值。您可能会发现这是一个数组或散列映射。为了实现这一点,就接收语言而言,您需要对表单中的数据数组使用正确的表示。
另一种选择是使用已知标识符扩充输入名称,然后在接收脚本中检查相关标识符的所有POST字段名称。例如:
<form id="tellafriend_form" method="post" action="landingpage.aspx">
<!-- static example -->
<input type="text" id="my_example" name="my_example" value="" />
<!-- dynamic part -->
<xsl:for-each select="something">
<xsl:variable name="publicationId" select="@id"/>
<input type="text" id="{$publicationId}" name="publication{$publicationId}" value="" />
</xsl:for-each>
</form>
迭代所有收到的POST名称:值对,并检查名称以“publication”开头的那些。
要使其正常工作,您必须选择实际发布ID中未出现的前置值。我假设发布ID是数字,因此任何有意义的非数字前置值(例如“发布”)都是合适的。