1

当我尝试在页面加载时使用 jquery 从表单属性中获取值时,我收到 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>
4

2 回答 2

0

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

于 2012-07-04T16:08:17.313 回答
0

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

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

所以这

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

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

于 2012-07-04T16:15:50.683 回答