1

ページの読み込み時に jquery を使用してフォーム属性から値を取得しようとすると、「オブジェクトはこのプロパティまたはメソッドをサポートしていません」という Java スクリプト エラーが発生します。これに関する問題を教えてください。

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

struts2 と Jquery を使用しています。アクション内には、この内部に ValueObject 属性として searchAttribute があり、別の属性としてブランドがあり、その内部には別の属性として 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 つの要素だけに一致する場合でも、常に DOM 要素の配列を返します。したがって、これらの要素を繰り返し処理する必要があります。または、それらの要素が 1 つしかないことが確実な場合は、[0] 配列インデックスをセレクターに追加して参照できます。

val() 関数は、配列ではなく単一の DOM 要素でのみ解釈できます。

したがって、この

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

問題を解決する必要があります-もちろん、最初の要素を参照する前に、配列の長さを確認し、その中に少なくとも1つの要素があることを確認する必要があります.

于 2012-07-04T16:15:50.683 に答える
0

jQuery のどのバージョンを使用していますか? 1.7.2だと [name=whatever] 構文に対応しなくなったと思います。私は jQuery/Sharepoint を使用して SharePoint 開発を行ってきましたが、同様のマークアップで xml を解析するときにその問題が発生しました。.filter()代わりにメソッドを使用して、必要なことを実行してみてください。

于 2012-07-04T16:08:17.313 に答える