2012-03-16 26 views
16

Tôi đang cố gắng tạo thành phần ngày nhập HTML5 để tôi có thể tận dụng bộ chọn ngày/giờ iOS gốc và tôi đang sử dụng jquery. Tôi có mã sau đây để tạo thành phần:Cách đăng ký sự kiện thay đổi giá trị trên <input type = date> trên iOS

var $inputDate = $("<input></input>"); 
    $inputDate.attr("type", "date"); 
    $inputDate.attr("value", "2004-05-03"); 
    $inputDate.change(function(event) 
    { 
    console.log("value changed"); 
    }); 

Mã đang chạy bên trong thành phần webkit trong ứng dụng gốc. Điều khiển đầu vào có vẻ tốt và tôi có thể thay đổi giá trị bằng bộ chọn. Tuy nhiên, hàm thay đổi không được kích hoạt khi tôi thay đổi giá trị và loại bỏ bộ chọn. Khi tôi chạy điều này trong một trang web trong Chrome, mọi thứ hoạt động như mong đợi. Làm thế nào để tôi thực hiện công việc này trên iOS?

+0

Tìm thấy những người dùng khác phàn nàn về sự kiện thay đổi không được kích hoạt, họ được đề nghị sử dụng một cái gì đó như bộ sau đây thay vào đó: http://cubiq.org/spinning-wheel-on-webkit-for-iphone-ipod-touch –

+0

Cảm ơn bạn đã đề xuất, nhưng sử dụng bộ công cụ đó không hỗ trợ ngôn ngữ mà sản phẩm của chúng tôi yêu cầu. –

Trả lời

23

Chức năng onblur được gọi khi bộ chọn ngày/giờ bị loại bỏ. Vì vậy, đây không làm việc:

var $inputDate = $("<input></input>"); 
$inputDate.attr("type", "date"); 
$inputDate.attr("value", "2004-05-03"); 
$inputDate.blur(function(event) 
{ 
    console.log("value changed"); 
}); 

Trong các phiên bản mới hơn của Chrome (và Chrome trên Android):

  • sự kiện onchange được gọi khi ngày được chọn
  • sự kiện onblur không viện dẫn khi menu thả xuống bị loại bỏ, chỉ khi điều khiển mất tiêu điểm bàn phím

Dưới đây là ví dụ cho biết sự kiện nào được tạo bằng JavaScript thuần: http://jsbin.com/iximuy/4

+0

Người đàn ông tôi đã rách tóc của tôi trên này, nhờ tiết kiệm cho tôi! – kand

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