2013-04-10 43 views
7

Tôi biết rằng thông thường trình duyệt sẽ tự động xử lý tự động sửa/viết hoa/v.v. khi người dùng nhấn enter. Nhưng tôi đang sử dụng thuộc tính contenteditable và thực hiện một số xử lý đặc biệt khi "enter" yêu cầu tôi sử dụng evt.preventDefault() khi người dùng nhấn enter. Vì tôi đang sử dụng preventDefault() trong trình nghe của mình, safari trên thiết bị di động để mở bong bóng tự động sửa và nó trông khá thú vị/không sử dụng được. Có cách nào thay thế (có thể sử dụng JS để bắn một sự kiện) để loại bỏ các bong bóng hoặc kích hoạt các hành vi bình thường mà không cần phải đưa ra preventDefault?Có cách nào khác để kích hoạt tự động sửa/tự động hoàn thành trên Safari trên thiết bị di động (trên iOS) khi người dùng nhấn enter không?

Tôi không muốn loại bỏ chức năng tự động sửa vì nó quan trọng đối với ứng dụng của tôi.

+0

Nói chung, khi iOS hiển thị tự động đề xuất cho giá trị đầu vào trên màn hình, có cách nào để lấy giá trị sau khi tự động sửa để sử dụng trong javascript không? – rakslice

+0

Bạn có thể sử dụng 'onfocus'' onblur' vv trong div có thể chỉnh sửa nội dung của bạn. –

Trả lời

0

Nên có mã mẫu! Nhưng tôi nghĩ rằng bạn nói chuyện với một cái gì đó như thế này:

$("#myForm").submit(function(event) { 
    event.preventDefault(); 
    // Do other stuff 
}); 

Vì vậy, tôi khá chắc chắn rằng bạn có thể bắn các .blur -event bằng tay mà có thể bắn mà autocomplete chức năng:

$("#myForm #myInput").blur(); 

Nếu câu trả lời này là sai, xin vui lòng cung cấp mã mẫu - không phải tất cả mọi người trên Stackoverflow là một nhà ảo thuật.

+0

Tôi không biết mã của người đăng gốc trông như thế nào, nhưng nếu tôi có trình xử lý 'keypress' với lệnh' event.preventDefault', việc thêm một 'blur' trước' event.preventDefault' sẽ không nhận được cho tôi văn bản đã chỉnh sửa: http://jsfiddle.net/LGWrJ/ – rakslice

0

tôi sẽ nói dễ dàng với bộ tập trung, trái ngược với câu trả lời trước đó làm việc với trình hành vi tự động sẽ tiếp tục tự động đúng ..

$("#MyInput").focus(function(event){ 
    event.preventDefault(); 
}); 
$("#MyInput").blur(){ // do events you want on focus lost.. from input.. :) 
}); 

Tôi nghĩ rằng điều này sẽ làm ..