2011-05-17 45 views
6

Tôi đang cố gắng thực hiện thả xuống xếp thẳng về phía trước cho safari di động. Tôi đã làm việc này 100% trong safari chính nó, trong đó cho thấy phong cách bình thường thả xuống. Nhưng danh sách thả xuống safari di động có nút 'tiếp theo'.'tiếp theo' trong trình đơn thả xuống trên iPhone Safari không kích hoạt trên sự kiện thay đổi

Nhấn nút tiếp theo này sẽ đưa bạn đến danh sách thả xuống tiếp theo trong dòng thác với kích hoạt onchange() - do đó danh sách thả xuống tiếp theo trống.

Người dùng buộc phải nhấn 'xong' để kích hoạt khi thay đổi, sau đó nhấp vào menu thả xuống tiếp theo.

Có ai biết cách này không. Hoặc sự kiện DOM nào được kích hoạt bởi safari''next 'trên thiết bị di động?

+0

Chỉ cần lưu ý (cho mục đích seo cũng), người ta có thể quy Điều này để jquery hoặc jquery Điện thoại di động hoặc thư viện javascript khác, nhưng nếu điều này vẫn là một vấn đề như của ngày hôm nay (mà nó là dành cho chúng tôi), sau đó nó chắc chắn sẽ là tốt để nghe một giải pháp. – iJames

+1

Một giải pháp thú vị cho vấn đề này là để hủy kích hoạt các nút tiếp theo và trước đó **. Nỗ lực thực hiện việc này đã được cung cấp tại đây: http://stackoverflow.com/questions/7472465/disabling-previous-and-next-buttons-in-mobile-safari – iJames

+0

Plugin từ [bài đăng này] (http: //stackoverflow.com/questions/5960731/strange-behavior-of-select-dropdowns-onchange-js-event-when-using-next-on-m/7284325#7284325) đã làm việc cho tôi. Dường như nó đang tải danh sách thứ hai ngay sau khi bạn chọn mục trong danh sách đầu tiên thay vì chờ cho đến khi người dùng nhấn 'tiếp theo' hoặc 'thực hiện' – Billy

Trả lời

0

Đó là lớp phủ gốc iOS, vì vậy những gì bạn sẽ nhận được là sự kiện mờ khi lớp phủ đó xuất hiện. Hãy thử sử dụng sự kiện làm mờ và xem cách hoạt động.

+0

Từ những gì tôi có thể nói, nó không có súc sắc. Tôi đã thử làm mờ, và thậm chí tập trung vào menu thả xuống thứ hai.Trong cả hai trường hợp trên iOS 5, lớp phủ dường như nắm bắt các tùy chọn thả xuống trước sự kiện thay đổi/làm mờ/lấy nét, do đó không cho phép các bản kéo xuống cập nhật và do đó không cho phép các bản cập nhật iOS cập nhật. Vẫn hy vọng cho một giải pháp. Vernon, anh có suy nghĩ nào khác về lớp phủ gốc iOS này không? Cảm ơn! – iJames

+0

Tôi tự hỏi liệu có thể có điều gì khác đang xảy ra hay không. Đây là một jsFiddle tôi thiết lập và thử nghiệm trên iPhone của tôi. http://jsfiddle.net/Wjbxt/1/ Sự kiện thay đổi đang kích hoạt khi tôi nhấp vào tiếp theo sau khi thực hiện lựa chọn trong menu thả xuống đầu tiên và cập nhật giá trị trong bản xem trước. Tôi đang sử dụng iOS 5, hãy thử nghiệm và cho tôi biết những gì bạn nhận được. – vernonk

+0

Bản cập nhật này (http://jsfiddle.net/Wjbxt/2/) sẽ thêm giá trị đã chọn vào menu thả xuống thứ hai. Điều đó không xảy ra ngay lập tức. Nếu tôi đi trước và sau đó quay trở lại thả xuống thứ hai giá trị là có. Nó chỉ không nhận được chọn ngay lập tức. Chắc chắn yêu cầu nghiên cứu thêm. – vernonk

0

Tôi đã thử nhiều giải pháp trực tiếp để giải quyết vấn đề này mà không thành công. Bản kéo thứ hai được điền sau Lớp phủ "trợ lý biểu mẫu" của Safari Mobile đi kèm với trình quay (được gọi là "bộ chọn" trong tài liệu - http://developer.apple.com/library/ios/#DOCUMENTATION/UserExperience/Conceptual/MobileHIG/UIElementGuidelines/UIElementGuidelines.html), xuất hiện. Vì vậy, bộ chọn được điền bằng các giá trị cũ.

Trong trường hợp khác, nếu tầng thứ hai kéo xuống không hoạt động, nút Tiếp theo của trợ lý biểu mẫu bỏ qua ngay trên đó. Tuy nhiên, trong kịch bản đó, khi phần tử biểu mẫu sau được hạ cánh, bản kéo xuống thứ hai sẽ tự cập nhật chính xác, do đó, nhấn vào "trước đó" tại điểm đó sẽ cung cấp danh sách chính xác trong bộ chọn.

"Câu trả lời" của tôi là Apple đề xuất rằng nền tảng xếp tầng dựa trên JavaScript không nên được sử dụng nhưng một UX khác sẽ được triển khai mặc dù tôi không tìm thấy gì mô tả điều này ngoài các trình đơn phân trang loại jQuery Mobile chuẩn.

2

Vô hiệu hóa menu thả xuống thứ hai từ đầu là công việc duy nhất xung quanh tôi đã tìm thấy cho đến nay! nó sẽ vô hiệu hóa nút "tiếp theo" trên iphones

Thêm attr bị vô hiệu hóa (disabled = "disabled") để bạn chọn và sử dụng javascript hoặc jQuery để bật hoặc tắt.

đây là mã jQuery

$(".DD1").focus(function() { 
    $('.DD2').attr('disabled', 'disabled'); 
}).blur(function() { 
    $('.DD2').removeAttr('disabled'); 
}); 

đây là một ví dụ sống được làm điều này

sử dụng jQuery: http://www.imotors.com/mobile

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