2013-09-05 27 views
7

Chúng tôi đang sử dụng giao diện người dùng jquery 1.8.23 tại nơi làm việc của tôi.Trình chỉnh sửa ngày thanh công cụ jQuery - Đang cố gắng nắm bắt sự kiện nhấp chuột từ ngày được nhấp

Làm cách nào để có thể chụp ngày được nhấp vào trong datepicker, vì vậy tôi có thể định dạng ngày hiện tại thành một dấu thời gian và chuyển giá trị đó vào trường biểu mẫu ẩn?

Dưới đây là một số mã tôi đã cố gắng để làm việc:

$('.ui-state-default').live('click', function(){ 
    console.log('date clicked'); 
    var currentdate = $(this).text(); 
    var d = currentdate; 
    var m = monthFormat($('.ui-datepicker-month').text()); 
    var y = $('.ui-datepicker-year').text(); 
    $('a.ui-state-default').removeClass('ui-state-highlight'); 
    $(this).addClass('ui-state-highlight'); 

    if (currentdate.length < 2) { 
    d = "0" + currentdate; 
    } 
    var datestamp = y + "-" + m + "-" + d; 
    console.log(datestamp); 
    $('#dateHidden').val(datestamp); 
}); 

Cám ơn nhìn vào mã của tôi Tôi đánh giá cao bất kỳ giúp đỡ các bạn có thể cung cấp.

+2

Tại sao bạn không sử dụng các sự kiện onSelect? http://api.jqueryui.com/datepicker/#option-onSelect – j08691

Trả lời

12

Bạn không cần phải làm bất cứ điều gì để định dạng ngày tháng. Tiện ích DatePicker thực hiện điều đó cho bạn. Chỉ cần sử dụng altFieldaltFormat tính:

$("#myDatePicker").datepicker({ 
    // The hidden field to receive the date 
    altField: "#dateHidden", 
    // The format you want 
    altFormat: "yy-mm-dd", 
    // The format the user actually sees 
    dateFormat: "dd/mm/yy", 
    onSelect: function (date) { 
     // Your CSS changes, just in case you still need them 
     $('a.ui-state-default').removeClass('ui-state-highlight'); 
     $(this).addClass('ui-state-highlight'); 
    } 
}); 

Tài liệu:

http://api.jqueryui.com/datepicker/#option-altField

http://api.jqueryui.com/datepicker/#option-altFormat

diễn:

http://jsfiddle.net/sFBn2/10/

+0

và cách xuất ra giá trị cho một trường ẩn? – bitmapshades

+1

Nó tự động thực hiện. Đó là những gì 'altField' là có cho. – melancia

+0

OK nhưng làm cách nào để biết giá trị có được chuyển đến trường bị ẩn hay không nếu công cụ nhà phát triển Chrome không cập nhật trong sự kiện onSelect? – bitmapshades

0

Trình chỉnh sửa ngày của bạn sẽ nghe điều đó.

thấy onSelect() function

Được gọi khi datepicker được chọn. Hàm nhận ngày được chọn làm văn bản và thể hiện datepicker làm tham số. điều này đề cập đến trường nhập liên quan.

$('.date-pick').datepicker({ 
    onSelect: function(date) { 
     //play with date here 
    }, 
---- 
---- 
--- 
1

jQuery Datepicker cung cấp tùy chọn ngày định dạng. Vậy tại sao bạn không tận dụng điều đó?

$('element').datepicker({ dateFormat: 'dd-mm-yy' }); 

Ngoài ra, bạn không cần phương pháp riêng để nắm bắt sự kiện nhấp chuột. Bạn phương pháp mặc định onSelect

$('input').datepicker({ 
dateFormat: 'yy-mm-dd', 
    onSelect: function (date) { 
    //defined your own method here 
    alert(date); 
    } 
}) 

Kiểm tra này JSFiddle

+0

Tôi có thể biết lý do cho downvote không? – Praveen

+0

tất cả những gì có là đặt thuộc tính class = "hasDatepicker" trên trường ẩn. (Tôi đã không bỏ phiếu cho bạn bản thân mình). – bitmapshades

+0

@bitmapshades Bạn đang cố gán giá trị cho một trường ẩn. Tôi không thể có được những gì bạn đang cố gắng để thêm lớp datepicker? Sửa chữa cho tôi nếu tôi đã sai. – Praveen

1
$('#calendar').datepicker({ 
     inline: true, 
     firstDay: 1, 
     changeMonth: false, 
     changeYear: true, 
     showOtherMonths: true, 
     showMonthAfterYear: false, 
     yearRange: "2015:2025",  
     dayNamesMin: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], 
     dateFormat: "yy-mm-dd", 
     onSelect: function (date) { 
      alert(date); 
     } 
    }); 
+0

Bạn nên thêm một mô tả cho giải pháp của bạn. –

Các vấn đề liên quan