javascript проверяет дату в Великобритании

#javascript

#javascript

Вопрос:

Я пытаюсь проверить дату в формате дд / мм / гггг, используя функцию, которую я нашел в Интернете, но я получаю эту ошибку: ‘input равно null’

Кто-нибудь может сказать мне, где мой синтаксис неправильный?

 if (validateDate($("#<%=StartDate.ClientID%>")) == false) {
                alert("not date");
            }
            else {
                alert("date");
            }

function validateDate(dtControl) {
        var input = document.getElementById(dtControl)
        var validformat = /^d{1,2}/d{1,2}/d{4}$/ //Basic check for format validity
        var returnval = false
        if (!validformat.test(input.value))
            alert('Invalid Date Format. Please correct.')
        else { //Detailed check for valid date ranges
            var dayfield = input.value.split("/")[0]
            var monthfield = input.value.split("/")[1]
            var yearfield = input.value.split("/")[2]

            var dayobj = new Date(yearfield, monthfield - 1, dayfield)
            if ((dayobj.getMonth()   1 != monthfield) || (dayobj.getDate() != dayfield) || (dayobj.getFullYear() != yearfield))
                alert('Invalid Day, Month, or Year range detected. Please correct.')
            else {
                returnval = true
            }
        }
        if (returnval == false) input.focus()
        return returnval
    } 
  

Комментарии:

1. Какой фреймворк вы используете? Вы проверили, $("#<%=StartDate.ClientID%>") действительно ли найден ваш элемент ввода?

Ответ №1:

Вы вводите объект jQuery в функцию validateDate, когда она принимает идентификатор строки. Попробуйте вместо этого ввести идентификатор объекта в функцию. Кроме того, значение объекта DOM используется внутри функции, поэтому убедитесь, что именно оно содержит дату:

 if (validateDate("<%=StartDate.ClientID%>") === false) {
    alert("not date");
} else {
    alert("date");
}
  

Вот пример, показывающий рабочую версию кода: http://jsfiddle.net/7WJYF /

Комментарии:

1. Я пробовал это, но с тем же результатом: if (validateDate(‘ctl00 $ContentBody $StartDate’) == false)

2. На что ссылается «ctl00 $ ContentBody $ StartDate»? Функция validateDate настроена на ожидание идентификатора для элемента DOM, где дата содержится в его свойстве «value».

3. Хорошо, это заработало, создав клиентскую сторону объекта вместо серверной.