2016-05-18 6 views
0

最初に選択するオプションはSearch by dateです。私は、このオプションがすべての日付のデータを返すので、selectがフォーカスを取得すると、この値が(All datesに)変更されるようにしたいと思います。 私はこれまでのところ持っています。アラートにフォーカスのセレクトの値を変更する

$("#select-date").focus(function() { 
    window.alert('Focus!'); 
    $('#select-date option[value="Search by Date"]').attr("value", "All Dates"); 
}); 

細かいI have found my selectをトリガーテストとして、第二には、何もしません。私は間違って何をしていますか?

+0

現在のHTMLを教えてもらえますか?あなたがやりたいこと:あなたの選択で別のオプションを選択するか、最初のオプションテキストを変更するだけですか? – OlivierH

+0

オプションの値および/または値とテキストを変更しますか?現在のコードで属性が変更されているので、その意図がある場合は.... – sinisake

+0

[デモを確認](https://jsfiddle.net/guradio/ayzvvzjq/) – guradio

答えて

0

あなたがやっているすべては、本質的に"Search by Date"からのjQueryのセレクタから返さoption要素の値を変更しているようしかしattrを使用すると、あなたのために選択した項目を変更するつもりはないが、ここでトラックにはかなりいます"All Dates"

focus()イベントリスナー内では、$("#select-dates").val()を使用してドロップダウンボックスの現在の値を取得できます。次に、この値をグループ内のの最初のoption子要素の値と照合します。

現在の値が最初の要素の値と一致する場合は、$("#select-dates").val('all')を使用して、コントロールの選択値をallに割り当てます。あなたは、私が用意しましたjsFiddle、hereを見ることができます

デモ

HTML

<select id="select-date"> 
    <option>- Select Date -</option> 
    <option value="all">All Dates</option> 
    <option value="2016-05">May, 2016</option> 
    <option value="2016-04">April, 2016</option> 
    <option value="2016-03">March, 2016</option> 
    <option value="2016-02">February, 2016</option> 
    <option value="2016-01">January, 2016</option> 
    <option value="2015-12">etc, etc...</option> 
</select> 

はJavaScript

$("select#select-date").on('focus', function() { 
    if ($(this).val() == null || $(this).val() == $(this).find("option:first-child").val()) { 
    $(this).val("all"); 
    } 
}); 

これは、あなたが発生するこの種の機能が欲しいのいずれかのドロップダウンボックスで動作します。

関連する問題