jQuery BlockUI là một thư viện jQuery hỗ trợ các kỹ thuật ajax người dùng trong lập trình web. Hôm nay gặp phải vấn đề với nó trên iOS.
Số là khách hàng có 1 form được submit bằng kỹ thuật ajax. Form này sử dụng một thư viện validate để kiểm tra đầu vào, nếu đầu vào ổn thì sẽ form sẽ được submit và trong quá trình submit thì sẽ có 1 bảng thông báo đang chạy hiện lên và bảng thông báo này sử dụng jQuery BlockUI để tạo ra.
Tất cả đều chạy ổn trừ iOS.
Loay hoay 1 hồi tìm nguyên nhân không ra, rồi thử đủ mọi cách vẫn không có hiệu quả. Đã test thử bằng cách tạo 1 nút bấm để gọi thử jQuery BlockUI thì vẫn chạy bình thường. Như vậy là đâu phải iOS block nó. Tại sao không chạy, vậy là lên mạng tìm thử và cuối cùng thì biết rằng trên iOS jQuery BlockUI nó không chịu chạy cùng lệnh submit form. Dù bạn có đặt lệnh jQuery BlockUI trước lệnh submit nó vẫn không chịu và giải pháp vô cùng đơn giản là sử dụng lệnh setTimeout() để delay lệnh submit form.
1 2 3 4 | $.blockUI({ message: $('#note') }); setTimeout(function() { form.submit(); }, 100); |
Chúc các bạn thành công.
Huỳnh Mai Anh Kiệt