2

月と年を受け入れる日付フィールドがあります。ただし、ユーザーがフィールドを選択するたびに、jQuery UI Datepicker はデフォルトで現在の月と年に設定され、入力したものはすべてクリアされます。

テスト ケースの書式設定を mm/dd/yy に切り替えたところ、Datepicker が正しく動作したので、基本的なコードが正しいと確信しています。

これを回避する方法について何か提案はありますか?

以下のコード例:

<html>
<head></head>
<body>
    <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.2.min.js"></script>
    <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.22/jquery-ui.min.js"></script>
    <input type="text" id="asdf" value="07/2006" />
    <script type="text/javascript">
        $('#asdf').datepicker({
            changeMonth: true,
            changeYear: true,
            dateFormat: 'mm/yy',
            showButtonPanel: true
        });
    </script>
</body>
</html>

編集:少し明確にするために、次のケースで日付ピッカーの日付を比較します。ここでは、入力の値に日を指定し、dateFormatオプションを変更します。

<html>
<head></head>
<body>
    <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.7.2.min.js"></script>
    <script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.ui/1.8.22/jquery-ui.min.js"></script>
    <input type="text" id="asdf" value="07/01/2006" />
    <script type="text/javascript">
        $('#asdf').datepicker({
            changeMonth: true,
            changeYear: true,
            dateFormat: 'mm/dd/yy',
            showButtonPanel: true
        });
    </script>
</body>
</html>
4

2 に答える 2

2

最初はあなたの質問を正しく理解していると思っていましたが、他の人が私を混乱させました。問題は、datepicker が mm/yy 形式を実際の日時形式として認識しないため、現在の日付を検索しようとすると混乱することです。つまり、回避策として何かファンキーなことをする必要があります。これが最善の方法だと言っているわけではありませんが、これが私が解決した方法です。

これは Date.js を使用することに注意してください

$('#asdf').datepicker({ changeMonth: true, changeYear: true, dateFormat: 'mm/yy',beforeShow: function(input, inst) 
{   //getter
    var defaultDate = $( "#asdf" ).datepicker( "option", "defaultDate" );
    //setter
    $( "#asdf" ).datepicker( "option", "defaultDate",   Date.parseExact($("#asdf").val(), "M/yyyy"));
}  });
于 2012-07-31T19:16:39.813 に答える
0

月または年の変更を「選択」操作として処理しないように見えますが、日をクリックすると月/年が変更されます。つまり、月と年を変更しても日をクリックしないと、操作をキャンセルしたと見なされます。

onChangeMonthYearイベントのコード( docs)を記述して、選択した月/年を読み取り、カレンダーダイアログを自分で閉じることができます。

于 2012-07-31T19:06:46.570 に答える