Проверка на дату - PullRequest
       1

Проверка на дату

1 голос
/ 16 февраля 2010

У меня есть одно веб-приложение, в котором мне нужно проверить одно поле даты в формате, например, мм / дд / гггг. Я искал в сети, но я не получил правильный. Пожалуйста, помогите мне, предоставив новую функцию или исправив мой код. Мой код показан ниже .. Я вызвал эту функцию JS на событие onblur ..

function isValidDate() {

var re = new RegExp('^(0[1-9]|[12][0-9]|3[01])/(0[1-9]|1[012])/(19|20)dd$');

if (form1.txtDateOfOccurance.value != '' && !form1.txtDateOfOccurance.value.match(re)) {
    alert("Invalid date format: " + form1.txtDateOfOccurance.value);
    form1.txtDateOfOccurance.value = "";
    form1.txtDateOfOccurance.focus();
    isEnable();
    return false;
}

}

Заранее спасибо ..

Ответы [ 6 ]

2 голосов
/ 16 февраля 2010

Посмотрите на http://www.smartwebby.com/DHTML/date_validation.asp, первый результат поиска при поиске по запросу "проверка даты в JavaScript" ..

1 голос
/ 16 февраля 2010

Вот регулярное выражение, которое вы хотите.


var re = /^(0[1-9]|1[0-2])\/(0[1-9]|[1-3]\d)\/((19|20)\d\d)$/

Хотя вам, вероятно, лучше, поскольку inkedmn предлагает проверить путем анализа ввода, так как MM / dd / yyyy - это распознанный формат даты через Date.parse.

0 голосов
/ 08 ноября 2011

Это моя реализация. Он проверяет допустимый диапазон и все.

function validateDate(g) {
    var reg = new RegExp("^(([0-9]{2}|[0-9])/){2}[0-9]{4}$");
    // Checks if it fits the pattern of ##/##/#### regardless of number
    if (!reg.test(g)) return false;
    // Splits the date into month, day, and year using / as the delimiter
    var spl = g.split("/");
    // Check the month range
    if (parseInt(spl[0]) < 1 || parseInt(spl[0]) > 12) return false;
    // Check the day range
    if (parseInt(spl[1]) < 1 || parseInt(spl[1]) > 31) return false;
    // Check the year range.. sorry we're only spanning ten centuries!
    if (parseInt(spl[2]) < 1800 || parseInt(spl[2]) > 2800) return false;
    // Everything checks out if the code reached this point
    return true;
}
0 голосов
/ 16 февраля 2010

Вы можете использовать:

function checkdate(input){
var validformat=/^\d{2}\/\d{2}\/\d{4}$/ //Basic check for format validity
var returnval=false;
if (!validformat.test(input.value))
alert("Invalid Date Format. Please correct and submit again.");
else{ //Detailed check for valid date ranges
var monthfield=input.value.split("/")[0];
var dayfield=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 and submit again.");
else
returnval=true;
}
if (returnval==false) input.select()
return returnval;
}
0 голосов
/ 16 февраля 2010
function IsValidDate(str) {
    var str2=""; 
    var date = new Date(str); 
    str2 = (date.getMonth()+1) + "/" 
               + date.getDay() + "/" 
               + (date.getYear()+1900);

    return (str == str2);
}
0 голосов
/ 16 февраля 2010

Я бы просто попытался проанализировать строку как объект Date и проверить результат (при условии, что вам нужно только знать, является ли это действительной датой или нет):

var myDate = Date.parse(form1.txtDateOfOccurance.value);
if(isNaN(myDate)){ 
    // it's not a real date
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...