2009-12-16 4 views
0

UPDATED - 내 표현이 명확하지 않아서. 다시 시도됩니다xslt 양식 필드 - 알 수없는 이름으로 입력 받기

을 내가 같이 동적으로 생성되는 여러 입력과 양식을 가지고 :

나는 XSLT를 사용하여 입력의 가치를 어떻게 제출
<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> 

? 정적 인 입력 필드에서 가져올 수 있지만 동적 필드에서는 가져올 수 없습니다. 이름/ID를 모르기 때문입니다.

나는 모든 $ publicationId가 2000보다 크지 않고 4000보다 작은 정수임을 알고 있습니다. 필요한 경우 숫자만으로 문제가 생기면 쉽게 접두사를 붙일 수 있습니다.

XSLT 솔루션이 바람직합니다. 또는 jQuery를 사용하여 트릭을 수행 할 수 있다면 (다른 해결책이 될 수도 있음 : Obtain form input fields using jQuery?).

BR. Anders

+0

검색으로 무엇을 의미합니까? 사용자가 양식 필드에 값을 입력하면 XSLT가 이미 렌더링됩니다. – Dan

+0

죄송합니다. 나쁜 영어. 양식이 제출되면 landingpage (form action = "landing.aspx")는 양식에서 값을 가져와야합니다. 그러나 입력 필드의 이름/ID를 모르므로 양식을 게시 한 후 방문 페이지에서 데이터를 가져 오는 방법을 알 수 없습니다. – Tillebeck

답변

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 필드 이름을 확인하는 것입니다.

모든 수신 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> 


대하여 반복 : 값 쌍과 그 이름 '공개'로 시작하는 것과 확인 예.

이 기능을 사용하려면 실제 게시 ID 내에서 발생하지 않는 값을 선택해야합니다. 여기서는 출판물 ID가 숫자라고 가정하고 있으므로, 의미있는 숫자가 아닌 'prepend value'(예 : 'publication')가 적절할 것입니다.

+0

슈퍼! 좋은 설명. 그리고 나는 이렇게 할 수 있습니다. 나는 방금 다른 해결책을 생각했다. 숫자가 아닌 곳에서 id를 사용할 수있다. 주어진 규칙에서 동적 입력을 생성한다. (cat = 2의 모든 책에 대한 입력을 만든다.) 랜딩 페이지가 cat = 2를 알고 있으면 똑같은 규칙 (cat = 2의 책을 기반으로 이름에서 양식 입력 데이터를 가져옴) 이후에 데이터를 가져올 수 있습니다. – Tillebeck

관련 문제