5

私は興味深い小さな問題に遭遇しました。それはおそらく私がばかげているだけです。

私はこのように少し見える選択ボックスを持っています:

<select id="dom_" name="dom_">
    <option value="1">1</option>
    <option value="2">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    ...

オプションは月の日を表し、最大31まで表示されます。

さて、(編集用に)情報を含むフォームをロードするときにデフォルト値を選択しようとしましたが、正しく機能させることができませんでした。

以前のSOの質問で見つけたこのスニペットを使用してみました。

$("#dom_ option[value$='" + 2 + "']").attr('selected', true);

この行が実行され、2番目のオプションが選択済みに設定されますが、他の2XまたはX2オプションも選択済みに設定されます。たとえば、12と22も選択に設定されます。

ただし、これを使用する場合:

$("#dom_ option").each(function()
{
    if ($(this).val() == 2)
    {
        $(this).attr('selected', true);
    }
    else
    {
        $(this).attr('selected', false);
    }

});

次に、正しいオプションが選択されますが、SELECTボックスは更新されません。

$("#dom_").val(2);ボックスを更新するには、手動でアフターワードを呼び出す必要があります。

だから、私の質問は、なぜ最初のオプションが機能しないのか、そしてなぜ2番目のオプションが自動更新されないのかということです。

SELECTまた、オブジェクトを経由$("#dom_")して呼び出す.valことと、オプションを取得しselectedてtrueに設定することの違いは、正確には何ですか?POSTこれらの両方が同じまたはGETデータを送り返しますか?

これは、うまくいけばこれを示すjsFiddleです。

それが役立つ場合は、JQuery 1.6.4を使用していますが、jsFiddleのいくつかの新しいバージョンで同じ問題を再現できます。

この質問が単純すぎる場合は、お詫び申し上げます。JavaScriptとJQueryに関しては、私はまだかなりアマチュアです。

4

3 に答える 3

6

末尾を($=)で使用していますが、代わりにvalue=、必要な値にのみ完全に一致するものを使用してください。

$("#dom_ option[value='" + 2 + "']").attr('selected', true);
于 2013-02-25T20:27:19.300 に答える
1

JavaScriptでこれを行う必要がないほど単純な設計のように思えます(つまり、静的コンテンツであり、単純なデフォルトが必要な場合)。"selected" 属性を html オプション タグに適用できることをご存知ですか?

<select id="dom_" name="dom_">
    <option value="1">1</option>
    <option value="2" selected="selected">2</option>
    <option value="3">3</option>
    <option value="4">4</option>
    ...
于 2013-02-25T20:30:14.117 に答える
1

どちらも今すぐ動作するはずです。

1) Jquery Ends With Selector( [name$="value"] ) に従って、特定の文字列で正確に終わる値を持つ指定された属性を持つ要素を選択します。

  $("#dom_ option[value='" + 2 + "']").attr('selected', true);

2) 2 番目の例では、オプションelseをリセットするため、ケースは不要です。selected

$("#dom option").each(function()
{
    if ($(this).val() == 2)
    {
        $(this).attr('selected', true);
    }
});

このJsfiddleをチェックしてください http://jsfiddle.net/NUTWR/

于 2013-02-25T20:33:45.007 に答える