#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. Хорошо, это заработало, создав клиентскую сторону объекта вместо серверной.