0

私のシナリオは次のとおりです。2 つのラジオ ボタンを含むインデックス ページと、結果用のスパン エリアがあります。ラジオ ボタンの 1 つがクリックされると、次のような入力ボックスを持つ ajax 生成ページでスパンがいっぱいになります。

<input size='25' class='datepicker' value='Click to enter deposit date' READONLY type='text'    id='depositDate' name='depositDate'> 

このページの下部には、JavaScript 検証を開始する [レコードを追加] ボタンがあります。検証は次のとおりです。

var inpDepDate  = $.trim($("#depositDate").val());
if(inpPayDate=='Click to enter pay date') // Validate pay date
{
    alert('Invalid pay date; re-enter');

    document.getElementById('payDate').focus();
    document.getElementById('payDate').select();

    return false;
}

また、私のjavascriptファイルには次のものがあります:

$(function(){
    $( "#depositDate" ).live('focus', function() {
        $(this).datepicker({
            changeMonth: true,
            changeYear: true,
            minDate: "+1D",
            showOtherMonths: true,
            selectOtherMonths: true}).focus();
    });
});

問題は、検証が失敗した場合です。テキストは強調表示されて選択されますが、自動的には開きません。

私は多くのことを試しましたが、実際にはこのサイトからたくさんのことを試しましたが、うまくいきませんでした. そして、ライブイベントを認識しないようです。しかし、検証に失敗した後にテキスト ボックスをクリックすると (テキストが強調表示されます)、カレンダーは問題なく開きます。jQuery と ui はかなり新しいものです。

4

1 に答える 1

1

過去に既に呼び出している場合は、datepicker を再インスタンス化する必要はありません#depositDate。(または支払い日)

これを試して:

if(inpPayDate=='Click to enter pay date') // Validate pay date
{
    alert('Invalid pay date; re-enter');

    $("#payDate").datepicker("show");
    return false;
}
于 2013-04-18T17:48:22.147 に答える