Saya ingin memvalidasi format tanggal pada input menggunakan format mm/dd/yyyy
.
Saya menemukan kode di bawah ini di satu situs dan kemudian menggunakannya tetapi tidak berhasil:
function isDate(ExpiryDate) {
var objDate, // date object initialized from the ExpiryDate string
mSeconds, // ExpiryDate in milliseconds
day, // day
month, // month
year; // year
// date length should be 10 characters (no more no less)
if (ExpiryDate.length !== 10) {
return false;
}
// third and sixth character should be '/'
if (ExpiryDate.substring(2, 3) !== '/' || ExpiryDate.substring(5, 6) !== '/') {
return false;
}
// extract month, day and year from the ExpiryDate (expected format is mm/dd/yyyy)
// subtraction will cast variables to integer implicitly (needed
// for !== comparing)
month = ExpiryDate.substring(0, 2) - 1; // because months in JS start from 0
day = ExpiryDate.substring(3, 5) - 0;
year = ExpiryDate.substring(6, 10) - 0;
// test year range
if (year < 1000 || year > 3000) {
return false;
}
// convert ExpiryDate to milliseconds
mSeconds = (new Date(year, month, day)).getTime();
// initialize Date() object from calculated milliseconds
objDate = new Date();
objDate.setTime(mSeconds);
// compare input date and parts from Date() object
// if difference exists then date isn't valid
if (objDate.getFullYear() !== year ||
objDate.getMonth() !== month ||
objDate.getDate() !== day) {
return false;
}
// otherwise return true
return true;
}
function checkDate(){
// define date string to test
var ExpiryDate = document.getElementById(' ExpiryDate').value;
// check date and print message
if (isDate(ExpiryDate)) {
alert('OK');
}
else {
alert('Invalid date format!');
}
}
Ada saran tentang apa yang mungkin salah?
javascript
validation
date
Matt
sumber
sumber
{}
tombol toolbar. Saya telah melakukannya untuk Anda kali ini. Selain itu, coba berikan beberapa informasi tentang masalah Anda: deskripsi tidak berfungsi berguna sebagai solusi kemudian memperbaikinya .Jawaban:
Saya pikir Niklas memiliki jawaban yang tepat untuk masalah Anda. Selain itu, menurut saya fungsi validasi tanggal berikut ini sedikit lebih mudah dibaca:
sumber
parseInt(parts[0], 10)
. Jika tidak, bulan September09
dibaca sebagai oktal danSaya akan menggunakan Moment.js untuk validasi tanggal.
Jsfiddle: http://jsfiddle.net/q8y9nbu5/
true
nilai untuk kredit parsing ketat ke @Andrey Prokhorov yang artinyasumber
Gunakan ekspresi reguler berikut untuk memvalidasi:
Ini bekerja untuk saya untuk MM / dd / yyyy.
sumber
Semua kredit pergi ke elian-ebbing
Hanya untuk yang malas di sini saya juga menyediakan versi fungsi yang disesuaikan untuk format yyyy-mm-dd .
sumber
/^(19|20)\d\d$/
, bulan dengan/^(0[0-9]|1[0-2])$/
dan hari dengan/^(0[1-9]|[12][0-9]|3[01])$/
sebelum parsing. Kemudian itu berhasil, terima kasih./^\d{4}\-\d{1,2}\-\d{1,2}$/
akan memvalidasi tttt-bb-hh atau tttt sebagai benar, oleh karena itu hanya memvalidasi panjang bukan setiap bagian tanggal individual. Untuk panjang tttt-bb-hh tanpa memeriksa apakah tahun, bulan, dan tanggal sudah benar, gunakanlah/^\d{4}\-\d{2}\-\d{2}$/
.Anda bisa menggunakan
Date.parse()
Anda dapat membaca di dokumentasi MDN
Dan periksa apakah hasil dari
Date.parse
isNaNSilakan lihat kapan direkomendasikan untuk digunakan
Date.parse
di MDNsumber
Tampaknya berfungsi dengan baik untuk tanggal format bb / hh / tttt, contoh:
http://jsfiddle.net/niklasvh/xfrLm/
Satu-satunya masalah yang saya miliki dengan kode Anda adalah kenyataan bahwa:
Memiliki spasi di dalam tanda kurung, sebelum ID elemen. Mengubahnya menjadi:
Tanpa detail lebih lanjut tentang jenis data yang tidak berfungsi, tidak banyak lagi yang bisa diberikan masukan.
sumber
Fungsi akan mengembalikan nilai true jika string yang diberikan dalam format yang benar ('MM / DD / YYYY') jika tidak maka akan mengembalikan false. (Saya menemukan kode ini online & mengubahnya sedikit)
sumber
Berikut ini satu cuplikan untuk memeriksa tanggal valid:
sumber
Tidak apa-apa jika Anda ingin memeriksa validasi dd / MM / yyyy
sumber
Temukan di kode di bawah ini yang memungkinkan untuk melakukan validasi tanggal untuk salah satu format yang disediakan untuk memvalidasi tanggal mulai / dari dan akhir / hingga. Mungkin ada beberapa pendekatan yang lebih baik tetapi telah menghasilkan ini. Catatan format tanggal yang disediakan dan string tanggal berjalan seiring.
Di bawah ini adalah cuplikan HTML
sumber
Saya menarik sebagian besar kode ini dari posting lain yang ditemukan di sini . Saya telah memodifikasinya untuk tujuan saya. Ini bekerja dengan baik untuk apa yang saya butuhkan. Ini dapat membantu situasi Anda.
sumber
Mirip dengan jawaban Elian Ebbing, tapi mendukung "\", "/", ".", "-", "" delimiters
sumber
sumber
Momen benar-benar bagus untuk menyelesaikannya. Saya tidak melihat alasan untuk menambah kerumitan hanya untuk memeriksa tanggal ... lihat saat ini: http://momentjs.com/
HTML:
Script:
sumber
Tanggal string pertama diubah ke format tanggal js dan diubah menjadi format string lagi, kemudian dibandingkan dengan string asli.
sumber
sumber
Sangat tidak biasa melihat postingan yang begitu lama dengan topik dasar seperti itu, dengan begitu banyak jawaban, tidak ada yang benar. (Saya tidak mengatakan tidak ada yang berhasil.)
Date.parse()
tidak boleh digunakan untuk string tanggal lokal. MDN mengatakan "Tidak disarankan untuk menggunakan Date.parse karena hingga ES5, penguraian string sepenuhnya bergantung pada implementasi." Standar membutuhkan string ISO 8601 (berpotensi disederhanakan); dukungan untuk format lain bergantung pada implementasi.new Date(string)
digunakan, karena itu menggunakan Date.parse ().Berikut adalah solusi yang efisien dan ringkas tanpa konversi implisit. Ini memanfaatkan kesediaan konstruktor Tanggal untuk menafsirkan 2018-14-29 sebagai 2019-03-01. Itu memang menggunakan beberapa fitur bahasa modern, tetapi itu mudah dihapus jika diperlukan. Saya juga menyertakan beberapa tes.
sumber
Javascript
JQuery
mengembalikan nilai true untuk string tanggal yang valid.
sumber
mengembalikan literal
'Invalid Date'
untuk string_tanggal yang tidak valid.Catatan: Silakan lihat komentar di bawah.
sumber
new Date("02-31-2000")
memberiThu Mar 02 2000 00:00:00 GMT-0300 (BRT)
.