xslt表单字段 - 获取具有未知名称的输入

时间:2009-12-16 22:00:36

标签: xslt forms input

更新 - 因为我不清楚我的表情。将再试一次:

我有一个包含多个输入的表单,这些输入是动态创建的:

<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。安德斯

1 个答案:

答案 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是数字,因此任何有意义的非数字前置值(例如“发布”)都是合适的。