2013-06-25 27 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。 –