对象不支持Jquery中的此属性或方法错误

时间:2012-07-04 15:44:20

标签: jquery struts2

当我尝试在页面加载时使用jquery从form属性获取值时,我收到java脚本错误, “对象不支持此属性或方法。” 让我知道这个问题。

alert($("[name=searchAttribute.brand.attributeValue]").val());

我正在使用struts2和Jquery。 在里面的动作我有searchAttribute作为ValueObject属性在这里我有品牌作为另一个和内部它有attributeValue作为另一个属性。

我需要在页面加载时根据此值加载下拉列表。

<script type="text/javascript">
    $(document).ready(
            function() {

            fetchDropDownValues($("#idGMMHouse").val(),'<s:property value="brandloadUrl"/>','idGMMBrand','idGMMLine');
            var fieldname = '';


                alert($("[name="+ 'searchAttribute.brand.attributeValue' +"]").val()); 

            });
</script>


<tr>
                    <td width="80px"><s:text name="filter.price.gmmhouse" /></td>
                    <td width="1px"><s:text name="filter.colon" /></td>
                    <td width="270px"> <s:select cssClass="drop" tabindex="1"
                        listKey="code" listValue="value" headerKey="0"
                        headerValue="Select One"
                        onchange="fetchDropDownValues(this.value,'%{brandloadUrl}','idGMMBrand','idGMMLine');" id="idGMMHouse"
                        name="searchAttribute.house.attributeValue" list="lstGMMHouse"></s:select></td>
                    <td width="80px"><s:text name="filter.price.gmmbrand" /></td>
                    <td width="1px"><s:text name="filter.colon" /></td>
                    <td width="160px"><s:url action="loadGMMLineDropDown"
                        id="lineloadUrl"></s:url><s:select cssClass="drop" tabindex="1"
                        id="idGMMBrand"
                        onchange="fetchDropDownValues(this.value,'%{lineloadUrl}','idGMMLine');"
                        headerKey="0" headerValue="Select One"
                        name="searchAttribute.brand.attributeValue" list="{}"></s:select></td>
                    <td width="80px"><s:text name="filter.brand.desc" /></td>
                    <td width="1px"><s:text name="filter.colon" /></td>
                    <td width="270px"><s:select cssClass="drop" tabindex="1"
                        id="idGMMLine" headerKey="0" headerValue="Select One"
                        name="searchAttribute.line.attributeValue" list="{}"></s:select></td>
                    <td align="LEFT">&nbsp;</td>
                </tr>

2 个答案:

答案 0 :(得分:0)

您使用的是哪个版本的jQuery?如果它是1.7.2,我认为它不再支持[name = whatever]语法。我一直在使用jQuery / Sharepoint进行一些SharePoint开发,并且在使用类似的标记解析xml时遇到了这个问题。尝试使用.filter()方法来完成您需要的工作。

答案 1 :(得分:0)

jQuery的$ selector总是返回一个DOM元素数组,即使选择器本身只匹配一个元素。因此,您应该遍历这些元素,或者如果您确定只有其中一个元素,那么您可以通过向选择器添加[0]数组索引来引用它。

val()函数只能在单个DOM元素上解释,而不能在数组上解释。

所以这个

alert($("[name=searchAttribute.brand.attributeValue]")[0].val());

应该解决你的问题 - 当然你应该在引用第一个元素之前检查数组的长度并确保其中至少有一个元素。