मैं एक अन्य इनपुट वर्षों से एक उपयोगकर्ता इनपुट वर्ष घटाना चाहता हूं, लेकिन अभी तक मुझे कोई भाग्य नहीं था।

मैं एक snippet बनाऊंगा जहां आप खेल सकते हैं।

मैं जो करने की कोशिश कर रहा हूं वह केवल वर्षों में प्रवेश करने के लिए input field (A) बनाना है। फिर उसके बाद कोई भी तारीख चुनें और उसे input year (A) में से घटा दें (दिनांक और महीना 31.03.input_year की तरह तय होता है)...

$(document).on('change', '#year_select', function() {
  calculate();
});

$(document).on('change', '#new_date', function() {
  calculate();
});

function calculate() {
  var year_enter = $('#year_select').val();
  var current_year = year_enter+'-03-31';
  var new_date = $('#new_date').val();
  if(year_enter != '') {
    //alert(current_year);
  }
  if(new_date != '') {
    //alert(new_date);
    
    var total = new_date - current_year;
    $('#answer').val(total);
  }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<p>Enter years (A)</p>
<input type="number" id="year_select" min="0" placeholder="Eg: 2018, 2001">

<br>

<p>Select Date (B)</p>
<input type="date" id="new_date">


<p>(A - B)</p>

<input type="text" readonly id="answer">

मुझे हमेशा NaN मान मिलता है, मुझे लगता है कि मेरी घटाव विधि गलत है। मैंने setDate(), getDate() आदि का उपयोग करने की कोशिश की, लेकिन मुझे तर्क समझ में नहीं आया।

अग्रिम में धन्यवाद...

1
Vpa 8 सितंबर 2018, 22:51

2 जवाब

सबसे बढ़िया उत्तर

अंकगणित करने के लिए आप new Date() का उपयोग तारीख में कास्ट टाइप करने के लिए कर सकते हैं

$(document).on('change', '#year_select', function() {
  calculate();
});

$(document).on('change', '#new_date', function() {
  calculate();
});

function calculate() {
  var year_enter = $('#year_select').val();
  var current_year = new Date(year_enter + '-03-31');
  var new_date = new Date($('#new_date').val());
  if (year_enter != '') {

  }
  if (new_date != '' && year_enter != '') {

    if (current_year < new_date) {
      $('#answer').val('A must be greater than B');
      return;
    }

    var total = Math.round(Math.abs((current_year.getTime() - new_date.getTime()) / (24*60*60*1000)));

    $('#answer').val(total);
  }
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<p>Enter years (A)</p>
<input type="number" id="year_select" min="0" placeholder="Eg: 2018, 2001"><span style="opacity: 0.5;">&nbsp;this currently has fixed -month-day(-03-31) </span>

<br>

<p>Select Date (B)</p>
<input type="date" id="new_date">


<p>(A - B)</p>

<input type="text" readonly id="answer">
1
95faf8e76605e973 10 सितंबर 2018, 08:44

तिथियों को संभालना मुश्किल हो सकता है, लेकिन पल लाइब्रेरी इसे बहुत आसान बना देती है। मेरे उदाहरण में मैं दो क्षेत्रों का इनपुट लेता हूं, उन्हें एक पल वस्तु में पार्स करता हूं और एक अवधि में उनके अंतर की गणना करता हूं। आप अवधि के बारे में Moment.js डॉक्स में अधिक पढ़ सकते हैं।

कोड स्निपेट अंतर दिनों में व्यक्त किया जाता है। यदि आप इसे महीनों, या वर्षों में बदलना चाहते हैं, तो नीचे दी गई पंक्ति को अपडेट करें।

log(Math.round(duration.as('days')) + 'days');

यदि अंतर एक वर्ष है, तो यह जांचने के लिए कि क्या वर्षों में परिणाम प्रदर्शित किया जा सकता है, आप कई कथनों को भी शामिल कर सकते हैं। यदि नहीं, और एक पूरा महीना है, तो परिणाम को महीनों आदि में व्यक्त करें।

यहाँ दिनों में एक कार्यशील उदाहरण है।

$(document).on('change', '#year_select', function() {
  calculate();
});

$(document).on('change', '#new_date', function() {
  calculate();
});

function calculate() {
  var yearSelect = document.querySelector('#year_select').value;
  var newDate = document.querySelector('#new_date').value;
  var first_date = new window.moment('31-03-' + yearSelect, 'DD-MM-YYYY');
  var second_date = new window.moment(newDate, 'YYYY-MM-DD');

  if(yearSelect.length !== 4 || newDate === '') {
    log('');
    return;
  }
  
  var duration = window.moment.duration(first_date.diff(second_date));

  log(Math.round(duration.as('days')) + 'days');
}

function log(value) {
  var answer = document.querySelector('#answer');
  answer.value = value;
}
<script src="https://cdn.jsdelivr.net/momentjs/2.10.6/moment-with-locales.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<p>Enter years (A)</p>
<input type="number" id="year_select" min="0" placeholder="Eg: 2018, 2001">

<br>

<p>Select Date (B)</p>
<input type="date" id="new_date">


<p>(A - B)</p>

<input type="text" readonly id="answer">

नोट: किसी दिनांक/अवधि को प्रारूपित करने के बारे में कुछ चर्चाएं हैं, उदा. 1 साल, 2 महीने, 5 दिन. यदि आप ऐसा कुछ चाहते हैं, तो इन चर्चाओं के संभावित समाधान पर एक नज़र डालें।

1
Roy Scheffers 10 सितंबर 2018, 03:04