Запустите jQuery .datepicker из другой функции JS - PullRequest
0 голосов
/ 07 декабря 2011

Мне нужно запускать .datepicker, только если текст, введенный в поле, не соответствует набору критериев.Но я не могу понять, как запустить .datepicker, кроме как непосредственно из поля, получающего фокус или нажатия кнопки.

Что я пытаюсь сделать ...

HTML

<input type="text" id="userDate" name="userDate" style="width: 100px;" onblur="checkDate(this.id);" />

JS

function checkDate(theId)
{
    var enteredValue = document.getElementById(theId).value;
    var checkedValue = evaluateValue(enteredValue); // this checks to see if the text meets the criteria

    if (checkedValue == null)
    {
        // this is where I want to call the .datepicker to have the calendar show up
        $("#userDate").datepicker();
    }
    else
    {
        document.getElementById(theId).value = checkedValue;
    }
}

Я знаю, это было бы проще, если бы календарь только появлялся, когда текстовое поле получает фокус.Но это не так, как клиент хочет, чтобы это работало.Они хотят принимать пользовательский ввод, если он попадает в желаемые форматы.Если нет, то им нужен календарь и принудительный формат по умолчанию.

Спасибо.

Ответы [ 2 ]

3 голосов
/ 07 декабря 2011

Если вы используете средство выбора даты в jQuery UI, вы бы отобразили средство выбора даты следующим образом:

$("#userDate").datepicker("show");

Редактировать:

Ваш код, вероятно, должен будетвыглядеть примерно так:

$(function(){
   $("#userDate").datepicker(); // <-- Create the datepicker on load
});

function checkDate(theId)
{
    var enteredValue = document.getElementById(theId).value;
    var checkedValue = evaluateValue(enteredValue); // this checks to see if the text meets the criteria

    if (checkedValue == null)
    {
        // this is where I want to call the .datepicker to have the calendar show up
        $("#userDate").datepicker("show");  // <-- Show datepicker when needed
    }
    else
    {
        document.getElementById(theId).value = checkedValue;
    }
}
0 голосов
/ 08 декабря 2011

Хорошо, после многих банок Pepsi Max и еще нескольких часов исследований, проб и ошибок;это то, что я придумал ... и это отвечает моим потребностям.

$(document).ready( function()
    {
        $("#userDate").blur(function()
        {
            var convertResults = convertMyDate('userDate'); // call to my code that checks the date for accepted formats

            if (convertResults == null)
            {
                $("#userDate").datepicker({
                    changeMonth: true,
                    changeYear: true
                });
                $("#userDate").datepicker("show");
            }
            else
            {
                document.getElementById('userDate').value = convertResults.toString('MM/dd/yyyy');
            }
        });
    });

Единственная проблема сейчас заключается в том, что форма клиента имеет 14 полей даты.Итак ... скопируйте еще 13 раз в мой код !?У меня просто нет времени сейчас, чтобы найти способ объединить все это в одну функцию, которая будет запускать их все в цикле ...

Любые предложения по этому поводу будут оценены.1006 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...