বৈধতা দিন যে শেষের তারিখটি jQuery সহ প্রারম্ভের তারিখের চেয়ে বেশি


105

শেষের তারিখ [পাঠ্যবক্স] প্রারম্ভের তারিখের চেয়ে [পাঠ্যবক্স] বেশি কিনা তা আমি jQuery এ কীভাবে যাচাই / বৈধতা করব?


এখানে একটি সমাধান রয়েছে: stackoverflow.com/questions/17169772/…
অ্যাড্রিয়ান পি।

উত্তর:


177

শুধু ফিউশন উত্তর প্রসারিত। এই এক্সটেনশন পদ্ধতিটি jQuery যাচাইকরণ প্লাগইন ব্যবহার করে কাজ করে। এটি তারিখ এবং সংখ্যা বৈধ করবে

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" }
    }
});

আপনি এটি দুটি পাঠ্য বাক্স সহ কীভাবে ব্যবহার করবেন?
ক্রস

1
আমার অ্যাপ্লিকেশনটিতে ফাঁকা শেষের তারিখের জন্য আমাকে এটিকে সামান্য পরিবর্তন করতে হয়েছিল, তবে এটি প্রচুর পরিমাণে করেছে। codeযদি (মান == 0) {সত্য ফিরে আসে; } অন্যথায় যদি (! / অবৈধ | NaN / ...code
ফ্র্যাঙ্ক লুক

3
বুগ সতর্কতা: আমি বুঝতে পারি যে প্রশ্নটি তারিখগুলি সম্পর্কে, তবে এই কোডটি সংখ্যা হিসাবে বিজ্ঞাপন হিসাবে কাজ করবে না। কেন এবং কীভাবে এটিতেও অন্তর্ভুক্ত রয়েছে তার ব্যাখ্যা দিয়ে আমি একটি উত্তর যুক্ত করেছি ।
জন

1
@ ক্রস jQuery.79ator.addMethod ("জিপ_কোড_চেকিং", ফাংশন (মান, উপাদান) {রিটার্ন jQuery ('# zip_endvalue')। ভ্যাল ()> jQuery ('# জিপ_স্টার্টভ্যালু')। ভাল () Z, "* জিপ কোড শেষ জিপ কোড শুরুর মানের চেয়ে বড় হওয়া উচিত ");
বালাসুরেশ আসাইথাম্বি

এটি গুগল ক্রোমে একটি ত্রুটি দেয়। যদি আপনি 12 এর চেয়ে কম বা 31 এর চেয়ে বেশি মান পাস করেন তবে এটি একটি তারিখ হিসাবে পার্স হওয়ার পরে শেষ হয় এবং তাই এটি একটি তারিখ হিসাবেও বৈধ হয়। আমাকে এটিকে দুটি পদ্ধতিতে (তাড়াতাড়ি) আলাদা করতে হয়েছিল তবে আমি আরও উপযুক্ত সমাধান খুঁজে পেতে চাই!
sbsatter

84
var startDate = new Date($('#startDate').val());
var endDate = new Date($('#endDate').val());

if (startDate < endDate){
// Do something
}

এটা আমার মনে হয় এটি করা উচিত


রাইট? ধন্যবাদ! কোন প্লাগইন প্রয়োজন। : পি
ভেল ভিক্টাস

1
সুন্দর এবং বাস্তবায়িত করা সহজ, যদিও jQuery. লাডিয়েট দুর্দান্ত
mknopf

অনেক অনেক ধন্যবাদ .. এত সহজ।
নিমিত জোশী

একমাত্র সমস্যাটি যখন আপনি দুই বছরের উদাহরণস্বরূপ একটি তারিখের পরিসীমা নিয়ে থাকেন।
27-06-2015 থেকে 02-02-2016

দুই বছরের মধ্যে যেমন তারিখের ব্যাপ্তি বিস্তৃত হয়। 27-06-2015 থেকে 02-02-2016, আমার জন্য যথাযথভাবে বৈধ হয়েছে।
থমরাই টি

19

পার্টিতে কিছুটা দেরি হলেও এখানে আমার অংশ

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");
}

14

রেফারেন্স jquery.ediaate.js এবং jquery-1.2.6.js আপনার প্রারম্ভের তারিখ পাঠ্যবক্সে একটি স্টার্টডেট ক্লাস যুক্ত করুন। আপনার শেষ তারিখের পাঠ্যবক্সে একটি শেষ তারিখের ক্লাস যুক্ত করুন।

আপনার পৃষ্ঠায় এই স্ক্রিপ্ট ব্লক যুক্ত করুন: -

<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

13

আমি দান্তেওনোর উত্তরটি নিয়ে শুধু ঝিমঝিম করছিলাম এবং দেখেছি ভাল উদ্দেশ্য করার সময়, দুঃখের সাথে এটি বেশ কয়েকটি ব্রাউজারে নষ্ট হয়ে গেছে যা নয় । কারণ এটি Dateনির্মাণকারীর পক্ষে যুক্তি হিসাবে যা গ্রহণ করবে সে সম্পর্কে আইই যথেষ্ট কঠোর হবে তবে অন্যরা তা গ্রহণ করবে না। উদাহরণস্বরূপ, ক্রোম 18 দেয়

> new Date("66")
  Sat Jan 01 1966 00:00:00 GMT+0200 (GTB Standard Time)

এর ফলে কোডটি "তুলনা করার তারিখগুলি" পাথের দিকে নিয়ে যায় এবং এগুলি সমস্ত সেখান থেকে উতরাইয়ের দিকে যায় (উদাহরণস্বরূপ এর new Date("11")চেয়ে বড় new Date("66")এবং এটি সম্ভবত পছন্দসই প্রভাবের বিপরীত)।

সুতরাং বিবেচনার পরে আমি কোডগুলি সংশোধন করে "তারিখগুলি" পাথের উপর "সংখ্যা" পাথকে অগ্রাধিকার দেব এবং যাচাই-র দশমিক সংখ্যার বৈধীকরণ - ইসনুমারিক () সংখ্যায় কার্যকর পদ্ধতি সহ ইনপুটটি সত্যই সংখ্যাসূচক কিনা তা যাচাই করেছিলাম

শেষ পর্যন্ত, কোডটি হয়ে যায়:

$.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}.');

এটি কাজ করে তবে এটি অপেরা এবং এফএফ, কোনও ধারণা নিয়ে কাজ করতে পারে না?
কোডড

: এটি বৈধতা ত্রুটির সাথে আসে এমনকি যদি নির্বাচিত শেষ তারিখটি নির্বাচিত শুরুর তারিখের পরে হয়
তবে

5

পাঠ্য ক্ষেত্রগুলি থেকে তারিখের মানগুলি jquery এর .val () পদ্ধতিটির মতো করে আনা যায়

var datestr1 = $('#datefield1-id').val();
var datestr2 = $('#datefield2-id').val();

আমি তারিখের স্ট্রিংগুলির তুলনা করার আগে তাদের দৃ strongly়ভাবে পার্স করার পরামর্শ দিচ্ছি। জাভাস্ক্রিপ্টের তারিখ অবজেক্টটিতে একটি পার্স () রয়েছে - পদ্ধতি, তবে এটি কেবল মার্কিন তারিখের ফর্ম্যাটগুলি (YYYY / MM / DD) সমর্থন করে। এটি ইউনিক্স যুগের সূচনালগ্ন থেকে মিলিসেকেন্ডগুলি ফেরত দেয়, তাই আপনি নিজের মানগুলি> বা <এর সাথে তুলনা করতে পারেন।

আপনি যদি আলাদা ফর্ম্যাট চান (যেমন আইএসও 86 866161), আপনার নিয়মিত এক্সপ্রেশন বা ফ্রি ডেট.জেএস লাইব্রেরি অবলম্বন করতে হবে।

আপনি যদি সুপার ইউজার-ফ্যানডলি হতে চান তবে আপনি টেক্সটফিল্ডের পরিবর্তে জ্যাকুয়ারি ইউআই ডেটপিকার ব্যবহার করতে পারেন। একটি তারিখ পিকার বৈকল্পিক রয়েছে যা তারিখের সীমা প্রবেশ করতে দেয়:

http://www.filamentgroup.com/lab/date_range_picker_using_jquery_ui_16_and_jquery_ui_css_framework/


5

সুতরাং thisচ্ছিক হওয়ার জন্য আমার এই নিয়মটি দরকার ছিল এবং উপরের পরামর্শগুলির কোনওটিই .চ্ছিক নয়। যদি আমি যে পদ্ধতিটি এটি প্রয়োজন হিসাবে প্রদর্শিত হয় ততক্ষণ পর্যন্ত যদি আমি এটির কোনও মান প্রয়োজন বলে সেট করেও।

এটি আমার কল:

  $("#my_form").validate({
    rules: {
      "end_date": {
        required: function(element) {return ($("#end_date").val()!="");},
        greaterStart: "#start_date"
      }
    }
  });//validate()

আমার addMethodমাইক ই এর শীর্ষ রেট করা উত্তরের মতো শক্তিশালী নয়, তবে আমি একটি তারিখ নির্বাচনের জন্য জোর করে JqueryUI ডেটপিকারকে ব্যবহার করছি। যদি কেউ আমাকে জানাতে পারেন যে কীভাবে তারিখগুলি সংখ্যা রয়েছে এবং পদ্ধতিটি toচ্ছিকভাবে কীভাবে করা যায় তা দুর্দান্ত হতে পারে তবে এই পদ্ধতিটি আমার পক্ষে কাজ করে:

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.');

4

জাভাস্ক্রিপ্ট / জ্যাকুইরিতে বেশিরভাগ বিকাশকারী তারিখের ফর্ম্যাটে রূপান্তর না করেই ও তারিখের তুলনাটি স্ট্রিং ব্যবহার করে। তারিখ থেকে তুলনা করার সহজ উপায়টি তারিখের চেয়ে বেশি।

Date.parse(fromDate) > Date.parse(toDate)

সঠিক ফলাফল পেতে তুলনা করার আগে সর্বদা থেকে এবং তারিখে পার্স করুন



এটা প্রশ্নের সমাধান। আমি চেষ্টা করে উত্তর দিয়েছি।
কুণাল ব্রহ্মে

2

আমি ফ্রাঞ্জ যা বলেছিলাম তা পছন্দ করি, কারণ আমি যা ব্যবহার করছি তা: পি

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;
}

2
$(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)
        }
    });
});

অথবা এই লিঙ্কে যান



1
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'));
}

আশা করি এটি সাহায্য করবে :)


0

প্রথমে আপনি বিভক্ত ফাংশন ব্যবহার করে দুটি ইনপুট বাক্সের মানগুলিকে বিভক্ত করুন। তারপরে বিপরীত ক্রমে একই কনক্যাট করুন। কনক্যাট জাতির পরে এটি পূর্ণসংখ্যায় বিশ্লেষণ করে। তারপরে যদি বিবৃতিতে দুটি মান তুলনা করুন। উদাঃ> 20-11-2018 2> 21-11-2018

20181120 এবং 20181121 এর সাথে তুলনা করার জন্য নতুন মানগুলি ভাগ করে নেওয়ার পরে এর তুলনা করুন।

var date1 = $('#datevalue1').val();
var date2 = $('#datevalue2').val();
var d1 = date1.split("-");
var d2 = date2.split("-");

d1 = d1[2].concat(d1[1], d1[0]);
d2 = d2[2].concat(d2[1], d2[0]);

if (parseInt(d1) > parseInt(d2)) {

    $('#fromdatepicker').val('');
} else {

}

দয়া করে এই সমাধানটির ব্যাখ্যা যুক্ত করুন
জানুয়ারী

0

এই কাজ করা উচিত

$.validator.addMethod("endDate", function(value, element) {
            var startDate = $('#date_open').val();
            return Date.parse(startDate) <= Date.parse(value) || value == "";
        }, "* End date must be after start date");


-2

যদি ফর্ম্যাটটি সঠিক ওয়াইওয়াইওয়াই / এমএম / ডিডি এবং দুটি ক্ষেত্রের মধ্যে ঠিক একইর জন্য গ্যারান্টিযুক্ত থাকে তবে আপনি ব্যবহার করতে পারেন:

if (startdate > enddate) {
   alert('error'
}

একটি স্ট্রিং তুলনা হিসাবে


আমি কীভাবে jquery এ সূচনা এবং শেষ তারিখটি সংজ্ঞায়িত করব?
ইনপুট

আমি ধরে নিচ্ছি সেগুলি নিয়মিত স্ট্রিং are আপনি তাদের পড়েন like (# শুরুর তারিখ: ইনপুট)। ওয়াল () এবং $ (# শেষ তারিখ: ইনপুট)। ওভাল ()
নাদিয়া আলরামলি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.