Wie kann ich überprüfen/in jQuery bestätigen, ob Enddatum [Textbox] größer ist als Datum beginnen [Textbox]?Validate dass Enddatum größer als Datum beginnen mit jQuery
Antwort
einfach erweitern off-Fusionen. Diese Erweiterungsmethode funktioniert mit dem jQuery validate-Plugin. Es wird validieren Daten und Zahlen
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}.');
es zu benutzen:
$("#EndDate").rules('add', { greaterThan: "#StartDate" });
oder
$("form").validate({
rules: {
EndDate: { greaterThan: "#StartDate" }
}
});
Wie benutzt man das mit zwei Textfeldern? – Cros
Regeln {texbox: {greaterThan: [textbox2.val()]}} oder so ähnlich .. –
Ich musste es leicht ändern, um leere Endtermine in meiner App zu erlauben, aber dies tat die Masse. 'code' if (Wert == 0) { Rückgabe wahr; } sonst wenn (!/Ungültig | NaN/... 'code' –
Wenn das Format korrekt YYYY/MM/DD und genau das gleiche sein zwischen den beiden Feldern gewährleistet ist, dann können Sie verwenden:
if (startdate > enddate) {
alert('error'
}
Als String-Vergleich
var startDate = new Date($('#startDate').val());
var endDate = new Date($('#endDate').val());
if (startDate < endDate){
// Do something
}
Das sollte es tun ich denke,
die Datumswerte aus den Textfelder können durch jQuerys .val() Methode wie
geholt werden 210var datestr1 = $('#datefield1-id').val();
var datestr2 = $('#datefield2-id').val();
Ich würde dringend empfehlen, die Datumszeichenfolgen vor dem Vergleich zu analysieren. Das Javascript-Date-Objekt hat eine parse() - Methode, unterstützt aber nur US-Datumsformate (JJJJ/MM/TT). Es gibt die Millisekunden seit Beginn der Unix-Epoche zurück, so dass Sie Ihre Werte einfach mit> oder < vergleichen können.
Wenn Sie verschiedene Formate (zum Beispiel ISO 8661) wollen, müssen Sie reguläre Ausdrücke oder die freie date.js Bibliothek zurückgreifen.
Wenn Sie super benutzerfreundlich sein wollen, können Sie jquery ui datepickers statt textfields verwenden. Es gibt eine Datumsauswahl-Variante, die Datumsbereiche eingeben können:
http://www.filamentgroup.com/lab/date_range_picker_using_jquery_ui_16_and_jquery_ui_css_framework/
Referenz jquery.validate.js und jquery-1.2.6.js. Fügen Sie Ihrem Startdatum-Textfeld eine startDate-Klasse hinzu. Fügen Sie der Enddatums-Textbox eine endDate-Klasse hinzu.
dieses Skript Block zu Ihrer Seite hinzufügen: -
<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>
Hoffnung hilft dies :-) antworten
ich mag diese Technik – wahmal
Ich mag, was Franz sagte, weil das, was ich bin mit: 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;
}
Ich bastelte gerade mitundfestgestellt, dass während gut gemeinten, leider ist es auf mehreren Browsern gebrochen, die nicht IE sind. Dies liegt daran, IE wird ziemlich streng sein, was es als Argument für die Date
Konstruktor akzeptiert, aber andere nicht. Zum Beispiel Chrome 18 gibt
> new Date("66")
Sat Jan 01 1966 00:00:00 GMT+0200 (GTB Standard Time)
Dieser den Code bewirkt, dass die „Daten vergleichen“ Weg zu nehmen und es geht alles bergab von dort (znew Date("11")
ist größer als new Date("66")
und dies ist offensichtlich das Gegenteil des gewünschten Effekts).
Daher habe ich den Code geändert, um dem "Zahlen" -Pfad über den "Datums" -Pfad Priorität einzuräumen und zu bestätigen, dass die Eingabe tatsächlich numerisch ist, mit der ausgezeichneten Methode, die in Validate decimal numbers in JavaScript - IsNumeric() bereitgestellt wird.
Am Ende wird der Code:
$.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'));
}
Hope this helfen :)
Also brauchte ich diese Regel optional zu sein und keine der oben genannten Vorschläge sind optional. Wenn ich die Methode anrufe, wird sie wie gewünscht angezeigt, auch wenn ich sie auf einen Wert setze.
Das ist mein Aufruf:
$("#my_form").validate({
rules: {
"end_date": {
required: function(element) {return ($("#end_date").val()!="");},
greaterStart: "#start_date"
}
}
});//validate()
Mein addMethod
ist nicht so robust wie Mike E. Top bewertete Antwort, aber ich bin mit dem jQueryUI picker einer aktuellen Auswahl zu erzwingen. Wenn jemand kann mir sagen, wie man sicherstellen, dass die Daten sind Zahlen sein und haben das Verfahren optional das wäre toll, aber jetzt diese Methode funktioniert für mich:
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.');
wenig spät zur Party, aber hier ist mein Teil
Date.parse(fromDate) > Date.parse(toDate)
Hier ist das Detail:
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)
}
});
});
oder Besuch dieser link
jQuery('#from_date').on('change', function(){
var date = $(this).val();
jQuery('#to_date').datetimepicker({minDate: date});
});
In Javascript/jquery die meisten der Entwickler verwendet Von & Bisher Vergleich die Zeichenfolge ist, ohne in das Datumsformat zu konvertieren. Der einfachste Weg zum Vergleich von Datum ist größer als bis heute ist.
Date.parse(fromDate) > Date.parse(toDate)
analysieren immer aus und bisher vor dem Vergleich zu genauen Ergebnissen
Dies liefert keine Antwort auf die Frage. Sobald Sie genug [Reputation] (https://stackoverflow.com/help/whats-reputation) haben, können Sie [jeden Beitrag kommentieren] (https://stackoverflow.com/help/privileges/comment); Stattdessen [geben Sie Antworten, die keine Klärung durch den Fragesteller erfordern] (https://meta.stackexchange.com/questions/214173/why-doe-i-need-50-reputation-to-comment-what-can- i-do-stattdessen). - [Aus Bewertung] (/ review/low-quality-posts/18026392) – Mamun
Es ist die Lösung zu hinterfragen. Ich habe es versucht und beantwortet. –
- 1. mit idiotensicher, um sicherzustellen, dass Enddatum ist größer als Startdatum
- 2. jQuery DataTables yadcf größer als gleich (Datum)
- 3. jQuery validate weniger als
- 4. Wie vergleiche ich das Enddatum mit dem Startdatum im Bootstrap, um sicherzustellen, dass das Enddatum größer ist als das Startdatum
- 5. Validate wenn größer als Null - mit Valdr-Bean-Validation
- 6. PHP Datum Zeit größer als heute
- 7. Validate Datum für alle Personen über 18 mit jQuery
- 8. jQuery Validate (Datumsbereich)
- 9. Überprüfen, ob ein Datum größer als das angegebene Datum ist
- 10. Validieren Sie p: Kalenderwert nicht größer als das heutige Datum
- 11. JAVASCRIPT validate Datum im Formular
- 12. Wie benutze ich größer als Operator mit Datum?
- 13. jQuery Validate onBlur mit Zusammenfassung
- 14. JQuery Validate mit Erfolg Methode
- 15. jquery validate mit mehreren Regeln
- 16. Validate Textfelder mit JQuery Validation
- 17. Anzeige "Enddatum" basierend auf Datumsauswahl "Startdatum" und eingegebenem Datum
- 18. Vergleichen von jQuery-Datum mit Rails-Datum
- 19. Validate Nullwert Datum Zeit mit fließenden Validierung
- 20. Holen Sie sich die Wochen beginnen und Enddatum von Jahr und Kalenderwoche mit Javascript
- 21. jQuery validate Telefonnummer
- 22. jquery Validate Fern Fehler
- 23. JQuery Validate abhängt Feld
- 24. jquery validate() Rückgabe undefined
- 25. Finding Start- und Enddatum von Datum Zahlen Tabelle (Datum Dauern)
- 26. Code für DatePicker - Zweites Datum muss größer sein als das erste Datum nach 1 Tag
- 27. Enddatum als ausgewähltes Startdatum in der Grundeinstellung datetimepicker
- 28. jQuery Validate - Url Validierung
- 29. Excel, IF Größer als Funktion, Zeit und Datum
- 30. jQuery Validate funktioniert nicht
erhalten Es gibt eine Lösung hier: http://stackoverflow.com/questions/17169772/how-to-compare-two-datepicker- date-jquery –