2013-06-25 24 views
0

因此,我有一個XSLT表單,它從XML表單獲取數據並將其顯示給我。我想通過類名稱獲取元素的值,但它始終返回undefined。這裏是XSLTcodeXSLT jquery classname和ASP.net

<!-- generic input template --> 
<xsl:template match="DataField" priority="0"> 
<td colspan="{DisplayOptions/@ColSpan}" location="{DisplayOptions/@Column}"> 
    <xsl:value-of select="FieldOptions/@DisplayName"/> 
    <br/> 
    <input type="{@ControlType}" name="{@Name}" onchange="textBlur(event)" /> 

    <xsl:apply-templates select="SubDataFields"/> 
</td> 

</xsl:template> 

,我已經嘗試了兩種方法的代碼段jQuery和使用文檔

function textBlur(e) { 
//this gives me the value and works 
var personInfo = e.target.value; 
var personField = e.target.name; 

//these two return undefined 
var elements = document.getElementsByClassName("personField"); 
console.log($(elements).val()); 

console.log($("."+personField).val()); 
} 

我在做什麼錯在這裏? personField是我想要的元素的名稱。由於XSLT爲我生成類名。所以我所做的就是使用事件來獲取元素的名稱和值,以確認我使用的是正確的名稱並獲取了值,然後我嘗試再次使用jquery和名稱獲取元素的值。

+0

我不明白你試圖在這裏展示。您嘗試通過class personField獲取元素,但是您的xslt示例不會生成此類。我在這裏錯過什麼? –

+0

@ hr_117 personField是我想要的元素的名稱。由於XSLT爲我生成類名。所以我所做的就是使用事件來獲取元素的名稱和值,以確認我使用的是正確的名稱,然後嘗試再次使用jquery和名稱獲取元素的值。 –

回答

1

它看起來像你試圖抓住任何輸入框中的任何文本更改時的值。在textBlur函數中,您正在傳遞「event」對象,因此event.target已經是您想要查找的元素。

但是,如果您想通過類名執行此操作,您似乎沒有在輸入標記上設置類名。你應該有可能將其更改爲:

<input class="personField" type="{@ControlType}" name="{@Name}" onchange="textBlur(event)" /> 

此外,jQuery代碼使用的字段(即personField = e.target.name)的名稱屬性的值,而不是一個固定字符串名稱的類名稱。換句話說,我想你想用這個:

console.log($(".personField").val()); 

希望這有助於!

+0

HAHAHA omg。我使用的是名字,並認爲它是類名,因此就是這樣對待它。愚蠢的大腦屁ever.I將不得不使用[jquery屬性選擇器](http://api.jquery.com/attribute-equals-selector/)Thnx。 –