Как проверить/проверить в jQuery, будет ли конечная дата [текстовое поле] больше, чем дата начала [текстовое поле]?Подтвердить, что дата окончания больше, чем дата начала с jQuery
ответ
Просто расширяющееся от слитых ответить. этот метод расширения работает с использованием плагина jQuery validate. Он будет проверять даты и номера
jQuery.validator.addMethod("greaterThan",
function(value, element, params) {
if (!/Invalid|NaN/.test(new Date(value))) {
return new Date(value) > new Date($(params).val());
}
return isNaN(value) && isNaN($(params).val())
|| (Number(value) > Number($(params).val()));
},'Must be greater than {0}.');
Чтобы использовать его:
$("#EndDate").rules('add', { greaterThan: "#StartDate" });
или
$("form").validate({
rules: {
EndDate: { greaterThan: "#StartDate" }
}
});
Как вы используете это с двумя текстовыми полями? – Cros
rules {texbox: {greaterThan: [textbox2.val()]}} или что-то в этом роде. –
Мне пришлось немного изменить его, чтобы пустые даты окончания в моем приложении, но это делало большую часть. 'code' if (value == 0) { return true; } else if (!/Invalid | NaN/... 'code' –
Если формат гарантированно правильно YYYY/MM/DD и точно так же между этими двумя областями, то вы можете использовать:
if (startdate > enddate) {
alert('error'
}
В сравнении строк
var startDate = new Date($('#startDate').val());
var endDate = new Date($('#endDate').val());
if (startDate < endDate){
// Do something
}
Это должно сделайте это, я думаю
Значения даты из текстовых полей могут быть получены с помощью .val() метода jquery как
var datestr1 = $('#datefield1-id').val();
var datestr2 = $('#datefield2-id').val();
Я бы рекомендовал проанализировать строки даты перед их сопоставлением. Объект Date Javascript имеет метод parse() - Method, но поддерживает только форматы дат США (YYYY/MM/DD). Он возвращает миллисекунды с начала эпохи unix, поэтому вы можете просто сравнить свои значения с> или <.
Если вы хотите использовать разные форматы (например, ISO 8661), вам необходимо использовать регулярные выражения или бесплатную библиотеку date.js.
Если вы хотите быть супер-пользователем, вы можете использовать jquery ui datepickers вместо текстовых полей. Существует вариант DatePicker, что позволяет ввести диапазон дат:
http://www.filamentgroup.com/lab/date_range_picker_using_jquery_ui_16_and_jquery_ui_css_framework/
Reference jquery.validate.js и JQuery-1.2.6.js. Добавьте класс startDate в текстовое поле даты начала. Добавьте класс endDate в текстовое поле даты окончания.
Добавить этот блок сценария на страницу: -
<script type="text/javascript">
$(document).ready(function() {
$.validator.addMethod("endDate", function(value, element) {
var startDate = $('.startDate').val();
return Date.parse(startDate) <= Date.parse(value) || value == "";
}, "* End date must be after start date");
$('#formId').validate();
});
</script>
Надеется, что это помогает :-)
Мне нравится эта техника – wahmal
Мне нравится то, что сказал Франц, потому что я использую: P
var date_ini = new Date($('#id_date_ini').val()).getTime();
var date_end = new Date($('#id_date_end').val()).getTime();
if (isNaN(date_ini)) {
// error date_ini;
}
if (isNaN(date_end)) {
// error date_end;
}
if (date_ini > date_end) {
// do something;
}
Я просто возился с danteuno's answer и обнаружил, что в то время как благие намерения, к сожалению, он разбит на несколько браузеров, которые не IE. Это связано с тем, что IE будет довольно строгим относительно того, что он принимает в качестве аргумента для конструктора Date
, но другие не будут. Например, Chrome 18 дает
> new Date("66")
Sat Jan 01 1966 00:00:00 GMT+0200 (GTB Standard Time)
Это приводит к тому, код взять «сравнить даты» путь, и все это идет под гору оттуда (например,new Date("11")
больше new Date("66")
, и это, очевидно, противоположно желаемому эффекту).
Поэтому после рассмотрения я изменил код, чтобы уделить приоритет пути «числа» по пути «даты» и подтвердил, что ввод действительно является числовым с отличным методом, представленным в Validate decimal numbers in JavaScript - IsNumeric().
В конце концов, код становится:
$.validator.addMethod(
"greaterThan",
function(value, element, params) {
var target = $(params).val();
var isValueNumeric = !isNaN(parseFloat(value)) && isFinite(value);
var isTargetNumeric = !isNaN(parseFloat(target)) && isFinite(target);
if (isValueNumeric && isTargetNumeric) {
return Number(value) > Number(target);
}
if (!/Invalid|NaN/.test(new Date(value))) {
return new Date(value) > new Date(target);
}
return false;
},
'Must be greater than {0}.');
function endDate(){
$.validator.addMethod("endDate", function(value, element) {
var params = '.startDate';
if($(element).parent().parent().find(params).val()!=''){
if (!/Invalid|NaN/.test(new Date(value))) {
return new Date(value) > new Date($(element).parent().parent().find(params).val());
}
return isNaN(value) && isNaN($(element).parent().parent().find(params).val()) || (parseFloat(value) > parseFloat($(element).parent().parent().find(params).val())) || value == "";
}else{
return true;
}
},jQuery.format('must be greater than start date'));
}
function startDate(){
$.validator.addMethod("startDate", function(value, element) {
var params = '.endDate';
if($(element).parent().parent().parent().find(params).val()!=''){
if (!/Invalid|NaN/.test(new Date(value))) {
return new Date(value) < new Date($(element).parent().parent().parent().find(params).val());
}
return isNaN(value) && isNaN($(element).parent().parent().find(params).val()) || (parseFloat(value) < parseFloat($(element).parent().parent().find(params).val())) || value == "";
}
else{
return true;
}
}, jQuery.format('must be less than end date'));
}
Надеется, что это поможет :)
Так что мне нужно это правило будет необязательными, и ни один из вышеперечисленных предложений не являются обязательными. Если я вызываю метод, он отображается по мере необходимости, даже если я задал ему значение.
Это мой призыв:
$("#my_form").validate({
rules: {
"end_date": {
required: function(element) {return ($("#end_date").val()!="");},
greaterStart: "#start_date"
}
}
});//validate()
Мой addMethod
не так надежен, как популярнейший ответ Mike E., но я использую DatePicker JqueryUI, чтобы заставить выбор даты. Если кто-то может сказать мне, как убедиться, что даты номера и имеют метод быть факультативным, что было бы здорово, но сейчас этот метод работает для меня:
jQuery.validator.addMethod("greaterStart", function (value, element, params) {
return this.optional(element) || new Date(value) >= new Date($(params).val());
},'Must be greater than start date.');
Немного опоздал на вечеринку, но вот моя часть
Date.parse(fromDate) > Date.parse(toDate)
Вот деталь:
var from = $("#from").val();
var to = $("#to").val();
if(Date.parse(from) > Date.parse(to)){
alert("Invalid Date Range");
}
else{
alert("Valid date Range");
}
$(document).ready(function(){
$("#txtFromDate").datepicker({
minDate: 0,
maxDate: "+60D",
numberOfMonths: 2,
onSelect: function(selected) {
$("#txtToDate").datepicker("option","minDate", selected)
}
});
$("#txtToDate").datepicker({
minDate: 0,
maxDate:"+60D",
numberOfMonths: 2,
onSelect: function(selected) {
$("#txtFromDate").datepicker("option","maxDate", selected)
}
});
});
Или Посещение этого link
jQuery('#from_date').on('change', function(){
var date = $(this).val();
jQuery('#to_date').datetimepicker({minDate: date});
});
В JavaScript/JQuery большинство разработчиков использует от & Для сравнения дат, который является строкой, без преобразования в формат даты. Самый простой способ сравнить с датой больше, чем на сегодняшний день.
Date.parse(fromDate) > Date.parse(toDate)
Всегда синтаксический от и до настоящего времени перед сравнением, чтобы получить точные результаты
Это не дает ответа на вопрос. Когда у вас будет достаточно [репутации] (https://stackoverflow.com/help/whats-reputation), вы сможете [прокомментировать любое сообщение] (https://stackoverflow.com/help/privileges/comment); вместо этого [предоставить ответы, которые не требуют разъяснений у аськи) (https://meta.stackexchange.com/questions/214173/why-do-i-need-50-reputation-to-comment-what-can- я-делать-вместо этого). - [Из обзора] (/ review/low-quality-posts/18026392) – Mamun
Это решение вопроса. Я попробовал и ответил. –
- 1. Asp.Net дата окончания больше, чем дата начала
- 2. Сравнение дат - дата окончания должна быть больше, чем дата начала
- 3. Faker с датой окончания больше, чем дата начала
- 4. Подтверждение даты окончания должно быть больше, чем дата начала?
- 5. PHP Weeknumber, дата начала и дата окончания
- 6. Как подтвердить дату окончания должна быть больше, чем дата начала, с помощью выпадающего списка
- 7. Дата начала и дата окончания DateDialogPickers
- 8. JQuery - дата окончания меньше даты начала
- 9. Конечная дата больше, чем дата начала с мм/гггг? JQuery валидатор
- 10. Дата начала и окончания даты в jQuery
- 11. JQuery/JavaScript: начало и конец даты в массиве, дата окончания должна быть больше, чем начать дата
- 12. Дата окончания должна быть больше, чем дата начала в Yii Bootstrap datepickerRow
- 13. подтвердите дату окончания, равную большему, чем дата начала
- 14. Jquery: DatePicker: старт/дата окончания
- 15. Дата начала и окончания даты начала работы
- 16. Дата начала и окончания в Bootstrap
- 17. Дата окончания как выбранная дата начала в базе datetimepicker
- 18. Jquery Дата Validation- дата> = Дата начала Дата
- 19. Дата начала и окончания даты Angularjs
- 20. Datetime сборщик проверка дата начала должна быть меньше, чем дата окончания не работает
- 21. Дата начала триггера MySQL до даты окончания
- 22. Конечная дата больше, чем проверка даты начала - Android
- 23. Сравнить Дата начала и окончания Android
- 24. Нокаут-валидация - дата больше, чем другая дата
- 25. Jacery bassistance: подтвердите, что дата окончания после даты начала
- 26. Проверить доступные номера типа номера, дата начала и дата окончания
- 27. Найти Дата начала/Дата окончания недели этого года/LAST
- 28. Таблица: DATEDIFF ('days', MIN ([Дата начала]), [Дата окончания])
- 29. Формат времени для Дата начала, Дата окончания - SSRS
- 30. mvc 2 дата начала и дата окончания даты
Существует решение здесь: http://stackoverflow.com/questions/17169772/how-to-compare-two-datepicker- date-jquery –