簡體   English   中英

jQuery將日期設置為輸入值

[英]Jquery set date to input value

我有start_date datepicker,並且在date_result文本字段上顯示了一些計算結果之后,它的工作正常,這是代碼:

jQuery(document).ready(function($) {
    $('start_date, #week_number, #year_number, #month_number').change(function() {
        var yr = $('#year_number').val() * 365;
        var wk = $('#week_number').val() * 7;
        var days = yr + wk;
        var endDate = new Date($('#start_date').val());
        endDate.setDate(endDate.getDate() + Number(days));
        $('#date_result').val(endDate.getFullYear() + '-' + (endDate.getMonth() + 1) + '-' + endDate.getDate());
    });
});

這是: 小提琴

問題: date_result輸入值為空,如何用計算的日期設置此值?

<input type="text" value="" size="20" name="form[date_result]" id="date_result"> 

通常,在Javascript中添加月份可能並不總是能按預期工作,因為某些情況和邊緣情況可能會導致意外結果。

例如, setMonth()函數僅接受介於0到11之間的月份值,並且還接受day參數,並且在使用此范圍之外的值時可以做一些有趣的事情:

如果您指定的參數超出預期范圍,則setMonth()嘗試相應地更新Date對象中的日期信息。 例如,如果將15用作monthValue ,則年份將增加1,並將3用作月份。

考慮使用特定日期的庫

我的建議是考慮使用像Moment.jsDate.js這樣的庫,它們是專門為處理這種類型的行為而設計的,可能會使您的代碼更易於閱讀:

$('#start_date, #month_number').change(function() {
   var months = $('#month_number').val();
   // Get your date as a moment (specifying the format you want to parse in)
   var end = moment($('#start_date').val(),"YYYY-MM-DD");
   // Add your months
   end.add(Number(months),'months');
   // You can even ease formatting (along with output format)
   $('#end_date').val(end.format('YYYY-MM-DD'));
});

在此處輸入圖片說明

 <!DOCTYPE html> <html> <head> <script src="https://cdn.jsdelivr.net/momentjs/2.10.6/moment-with-locales.min.js"></script> <script src="https://code.jquery.com/jquery-2.1.4.js"></script> <meta charset="utf-8"> <meta name="viewport" content="width=device-width"> <title>JS Bin</title> </head> <body> <input type="date" id="start_date"> <select id="month_number"> <option value="0">Number of months to add</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> <option value="8">8</option> <option value="9">9</option> <option value="10">10</option> <option value="11">11</option> <option value="12">12</option> </select> <input type="text" id="end_date" placeholder="End Date"> <script> $(function() { $('#start_date, #month_number').change(function() { var months = $('#month_number').val(); // Get your date as a moment var end = moment($('#start_date').val(), "YYYY-MM-DD"); // Add your months end.add(Number(months), 'months'); // You can even ease formatting $('#end_date').val(end.format('YYYY-MM-DD')); }); }); </script> </body> </html> 

jsFiddle刪除name屬性,然后嘗試一次

請打開開發者控制台以查看日志

<input type="text" value="" size="20" id="date_result" placeholder="End Date">

設置值

[英]Set the value of <input type=“date”… in jquery

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM