2016-09-21 13 views
21

Safari 10.0 trong macOS Sierra dường như đã thay đổi cách trình giữ chỗ trong đầu vào hoạt động khi giá trị đầu vào được thay đổi thông qua JavaScript. Nó bây giờ cũng khác với những gì Chrome (53.0.2785.116) đang làm.Hành vi giữ chỗ đầu vào mới trong Safari 10 - không còn ẩn trên thay đổi qua JavaScript

Cho đến bây giờ, khi đặt giá trị đầu vào thông qua JavaScript, trình giữ chỗ sẽ biến mất. Sau khi đặt giá trị trở lại trống thông qua JavaScript, trình giữ chỗ sẽ xuất hiện trở lại.

Hiện tại, đặt giá trị đầu vào qua JavaScript không ẩn trình giữ chỗ, cho đến khi đầu vào tăng tiêu điểm sau đó (ví dụ: bằng cách nhấp vào).

Kiểm tra này JS Bin cho một bản demo: https://jsbin.com/rogoludahu/edit?html,js,output

Đây có phải là hành vi có ý định? Nếu vậy, có cách giải quyết thông minh nào để ẩn/bỏ ẩn trình giữ chỗ sau khi thay đổi qua JavaScript không?

Chỉnh sửa: Điều này hiện đã được nộp tại rdar: // 28412751 cho Safari 10 và Xem trước công nghệ Safari.

+2

Tôi nhận thấy hành vi tương tự! Đối với tôi, điều này có vẻ là một lỗi –

+3

Rất có thể là một lỗi. Thay vì cách hacky để sửa chữa là đặt giá trị hai lần như một giải pháp tạm thời https://jsbin.com/qiloyuxura/1/edit?html,js,output –

+0

hãy thử điều này có thể: document.getElementById ("myInput"). SetAttribute ('giá trị', "Giá trị mới"); –

Trả lời

2

Điều này đã được giải quyết trong Safari Technology Preview Release 37 (Safari 11.1, WebKit 12605.1.2) cũng như trong phiên bản Safari phiên bản 11.0.3 thông thường (WebKit 13604.5.6).

5

Tôi đã gặp sự cố này sớm hơn hôm nay. Theo như tôi đã thấy, không có giải pháp tốt. Cách giải quyết hacky của tôi là gọi .focus() và sau đó .blur() trên phần tử ngay sau khi giá trị được trao cho nó.

0

Theo this Apple thread (và được xác nhận bởi một trong các đồng nghiệp của tôi), đây chỉ là vấn đề nếu bạn đã mở bảng điều khiển Javascript. Vì vậy, bạn có thể không cần phải lo lắng về một workaround!

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