0

私はjQueryでいくつかの異常な結果を経験しており、誰かがその理由について私に教えてくれることを望んでいました。jQueryはこれを行うのに十分強力であると確信しているので、私は何が間違っているのだろうかと思います。これが私が持っているものです(いくつかは一見シンプルで理解しやすいコードです):

///////////reset default search entries/////////////
$("#sOrderByDLM").attr('checked', 'checked');
$("#sOrderByID").attr('checked', '');
$("#sOrderByPOIName").attr('checked', '');
$("#sOrderByAge").attr('checked', '');
$("#sOrderByOfficer").attr('checked', '');

$("#sOrderByDesc").attr('checked', 'checked');
$("#sOrderByAsc").attr('checked', '');

これは、非送信タイプ(通常)ボタンのクリックで呼び出される単純なjavaScript関数内にあります。問題は、これをクリックすると、sOrderByDLMラジオボタンを埋めるのではなく、実際にsOrderByOfficerボタンを埋め、同様に下の2つのjQueryステートメント(たとえば、の代わりにsOrderByAsc''になります)で、jQueryに' 'をリセットするように露骨に指示していないことです。 2番目の引数の属性は空白ですが、デフォルトにする予定のフィールドに対して特に''に設定した場合を除きますか?checkedsOrderByDesccheckedchecked

チェックボックスでも同様の問題が発生しましたが、同じステートメントを逆の順序で呼び出すだけで回避策が見つかりましたが、ここではうまくいかないようです。かみそりで''を設定checked="checked"すると、すべて問題ありませんが、クライアント側で機能するにはこのボタンが必要です。

とにかく、HTMLが必要な場合は提供しますが、IDを確認するためにトリプルチェックを行っているので、必要だとは思えません。

助けてくれてありがとう!

(そして、神はスタックオーバーフローを祝福します、私はあなたなしで私が何をするかわかりません!:D)

アップデート:

                    <tr>
                        <td class="orderlineupColor"><label for="sOrderByDLM">Date Last Modified</label><br/><input type="radio" id="sOrderByDLM" name="sOrderBy" style="margin-left: 115px;" value="OrderByDLM" @OrderByFiller[0] /></td>
                        <td class="orderlineupColor"><label for="sOrderByID">Entry ID</label><br/><input type="radio" id="sOrderByID" name="sOrderBy" style="margin-left: 115px;" value="OrderByID" @OrderByFiller[1] /></td>
                        <td class="orderlineupColor"><label for="sOrderByPOIName">POI Name</label><br/><input type="radio" id="sOrderByPOIName" name="sOrderBy" style="margin-left: 115px;" value="OrderByPOIName" @OrderByFiller[2] /></td>
                        <td class="orderlineupColor"><label for="sOrderByAge">Age</label><br/><input type="radio" id="sOrderByAge" name="sOrderBy" style="margin-left: 115px;" value="OrderByAge" @OrderByFiller[3] /></td>
                        <td class="orderlineupColor"><label for="sOrderByOfficer">Officer</label><br/><input type="radio" id="sOrderByOfficer" name="sOrderBy" style="margin-left: 115px;" value="OrderByOfficer" @OrderByFiller[4] /></td>
                    </tr>
                    <tr>
                        <td class="orderlineupColor2">In Descending Or<br/>Ascending Order:</td>
                        <td class="orderlineupColor2"><label for="sOrderByDesc">Descending Order</label><br/><input type="radio" id="sOrderByDesc" name="sAscOrDesc" style="margin-left: 115px;" value="OrderByDesc" @OrderByAscOrDescFiller[0] /></td>
                        <td class="orderlineupColor2"><label for="sOrderByAsc">Ascending Order</label><br/><input type="radio" id="sOrderByAsc" name="sAscOrDesc" style="margin-left: 115px;" value="OrderByAsc" @OrderByAscOrDescFiller[1] /></td>
                        <td class="orderlineupColor2"><button type="button" class="smallbtn" onclick="clearSortEntries()">Reset Sort Entries</button></td>
                        <td class="orderlineupColor2"></td>
                    </tr>
4

4 に答える 4

3

boolsを使用してみてください.prop()

$("#sOrderByDLM").prop('checked', true); // To check

$("#sOrderByID").prop('checked', false); // To Uncheck
于 2012-10-09T20:50:25.690 に答える
1

'checked'と''を使用する場合は、属性に''空白を割り当てる代わりにremoveAttr jquery関数を使用しcheckedますが、これは好ましくありません。trueとfalseを割り当てることは私にとってより対称的に見えるので、checkedを割り当てて属性を削除します。

$("#sOrderByDLM").attr('checked', 'checked');

$("#sOrderByID").removeAttr('checked');

'checked'およびの代わりにtrueまたはfalseを使用します''

$("#sOrderByDLM").attr('checked', true);

$("#sOrderByID").attr('checked', false);
于 2012-10-09T20:45:48.317 に答える
1

チェックを外すには、次を試してください。

$("#sOrderByAsc").removeAttr('checked', '');

checkedおよびselectedはバイナリプロパティであり、true/false属性ではありません。

$("#sOrderByDLM").attr('checked', 'checked');正しい。

そうです:.attr('selected', 'selected');

于 2012-10-09T20:45:58.033 に答える
-1

との間に違いが.attr()あります.prop()

aaa

于 2012-10-09T20:50:17.840 に答える