поля формы xslt - получить ввод с неизвестным именем - PullRequest
0 голосов
/ 17 декабря 2009

ОБНОВЛЕНО - так как мне было непонятно во мне выражения. Попробую еще раз:

У меня есть форма с несколькими входами, которые создаются динамически, как это:

<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? Я могу получить его из поля статического ввода, но не из динамических полей, так как я не знаю там имен / идентификаторов.

Я знаю, что все $ editionId будет целым числом больше 2000, но меньше 4000. При необходимости к ним может быть легко добавлен префикс с некоторым текстом (если только цифры создают проблему).

Было бы предпочтительным решение XSLT. Или используя jQuery, если это может сработать (увидели, это может быть другое решение: Получить поля ввода формы с помощью jQuery? ).

BR. Андерс

1 Ответ

0 голосов
/ 18 декабря 2009

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>

Попробуйте это и проверьте значение publication в данных POST. Вы можете найти это массив или hashmap. Чтобы это работало, вам нужно будет использовать правильное представление для массива данных в форме в том, что касается принимающего языка.

Другой вариант - дополнить входные имена известным идентификатором, а затем, в принимающем скрипте, проверить все имена полей 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 имя: значение и проверьте, нет ли имени, начинающегося с «публикации».

Чтобы это работало, вы должны выбрать значение предоплаты, которое не встречается в фактическом идентификаторе публикации. Здесь я предполагаю, что идентификатор публикации является числовым, поэтому целесообразно использовать любое значимое нечисловое значение предварения (например, «публикация»).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...