2011-08-30 19 views
5

vì chúng tôi biết có rất nhiều sự kiện sẽ được kích hoạt khi chúng tôi nhập.Sự kiện JQuery/DOM để nhập tiếng Trung (ibus)?

chẳng hạn như keyup, keydown, keypress hoặc một thứ khác.

Có sự kiện nào khác sẽ chỉ được kích hoạt khi nội dung trong trường văn bản được thay đổi không? và nếu không có, cách viết một số mã javasrcipt để hoàn thành tính năng này

+0

Bạn có muốn xây dựng thêm về trường hợp sử dụng của mình không? có lẽ cách duy nhất để đạt được điều đó là cung cấp phương thức nhập liệu dựa trên web cho chính bạn. –

Trả lời

2

Sự kiện change có thể giúp ích?

+0

Không, vì thay đổi không phát hiện được nội dung trong trường có bị thay đổi hay không, nhưng nó sẽ không được kích hoạt trừ khi bạn nhấn Enter hoặc trường bị mất tiêu điểm – castiel

+0

Trước khi bạn thực hiện chuỗi (chẳng hạn như nhấn "enter"), chuỗi thực sự được lưu trữ trong bộ đệm preedit của phương thức nhập. tức là Trình duyệt sẽ không biết chính xác những gì bạn nhập trước khi bạn cam kết chuỗi. –

0

Tôi đã tạo một fiddle đơn giản để xác định điều gì sẽ xảy ra khi một nút văn bản trong phần tử có thể chỉnh sửa được sửa đổi bằng một lần nhấn phím. Như tôi đã làm điều đó, tôi quyết định kiểm tra những gì sẽ xảy ra khi sử dụng ibus vì tôi sử dụng ibus cho công việc của riêng tôi. Tôi xác định rằng khi ibus được sử dụng, sự kiện bàn phím duy nhất được tạo ra là một sự kiện keyup với giá trị which là vô dụng.

Đây là fiddle tôi đã tạo:

http://jsfiddle.net/lddubeau/jWnL3/

  1. Tới fiddle đó.

  2. Bật bảng điều khiển Javascript của bạn.

  3. Nhấp vào chạy.

  4. Nhấp vào giữa ký tự 2dn và thứ ba của từ "toto".

  5. Nhập nội dung nào đó bằng ibus. Ví dụ, gõ 我.

  6. Kết quả khác nhau tùy thuộc vào trình duyệt của bạn. Trên Chrome 29 mỗi lần gõ phím được ghi lại vì vậy nếu tôi gõ 我 bằng cách sử dụng phương pháp tonepy, tôi lấy keyup và keydown cho mỗi "w" "o" "3" và "1". (Các bính âm, giai điệu và sau đó nhấn 1 để chọn lựa chọn đầu tiên.) Sự kiện này cuối cùng là:

    event type: keyup 
    which: 229 
    keyCode: 229 
    charCode: 0 
    node value: 
        to我to 
    

    Các sự kiện trước khi một người này tất cả đều có cùng các giá trị ngoại trừ một số là của "KeyDown" loại và tất nhiên giá trị nút hiển thị "toto" cho đến khi sự kiện cuối cùng.

    Trên Firefox 23 chỉ có một sự kiện được đăng ký:

    "event type:" "keyup" 
    "which:" 49 
    "keyCode:" 49 
    "charCode:" 0 
    "node value:" " 
        to我to 
    " 
    

    Không KeyDown hoặc bấm phím sự kiện được tạo ra. (Khi nhập các ký tự trong phạm vi ascii, bạn sẽ nhận được keydown, keypress và keyup cho mỗi khóa.)

Giá trị trong đó và mã phím dường như không tương ứng với bất kỳ điều gì hợp lý. Tôi đã kiểm tra đối tượng sự kiện được truyền cho trình xử lý sự kiện và không thấy bất kỳ trường nào cho biết rằng người dùng vừa nhập 我.

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