2011-02-01 39 views
8

Tôi có một input lĩnh vực:Làm cách nào để sử dụng jquery để xác thực trường nhập khi thay đổi?

<input type="text" name="notifyEmail" id="parametersEmail" value="" size=40 /> 

Tôi có một đoạn mã jquery mà làm việc khi tôi nhấn tab hoặc rời khỏi hiện trường, trong đó kêu gọi một thói quen xác nhận:

$("#parametersEmail").blur(function(event) { 
    validateParameterEmail(); 
}); 

Những gì tôi sẽ thích làm là chạy hàm validateParameterEmail() bất cứ khi nào giá trị hoặc nội dung của trường nhập thay đổi.

Vì vậy, tôi sau đó cũng thử .change() handler:

$("#parametersEmail").change(function(event) { 
    validateParameterEmail(); 
}); 

Nhưng khi tôi thay đổi các nội dung của parametersEmail, xử lý này không gọi hàm xác nhận.

Có một trình xử lý nào khác mà tôi nên sử dụng không? Hoặc tôi không thể đính kèm nhiều trình xử lý sự kiện vào trường nhập liệu?

+2

fyi ... trên trường văn bản nhập, .blur() và .change() khá hiệu quả giống nhau. Sự khác biệt là mờ = mất tiêu điểm trong khi thay đổi = mất tiêu điểm + giá trị khác nhau. Điểm là bạn phải mất tập trung vào nó một trong hai cách. Nếu bạn muốn hàm được gọi mỗi khi người dùng nhập vào một char, khi họ đang nhập, sau đó sử dụng .keyup hoặc.keydown như đã đề cập bởi những người khác –

Trả lời

8

Hãy thử $("#parametersEmail").keydown(function(event) {})

+4

hoặc .keypress() hoặc .keyup() –

+0

Có! Cảm ơn bạn rất nhiều. –

+9

'.keydown()' xuất hiện để thực sự kích hoạt trước khi giá trị của đầu vào đã thay đổi. Nói cách khác, nếu bạn gõ '1234', điều này sẽ xác nhận trên' 123'. Tương tự, nếu bạn gõ '1234 [delete]', nó sẽ xác nhận hợp lệ trên '1234'. '.keyup()' có lẽ tốt hơn để xác thực biểu mẫu. – jonmorgan

0

Thay đổi đề cập đến khi bạn nhấp chuột/di chuyển từ đầu vào. Bạn có thể đang tìm kiếm onKeyUp().

6

Hãy thử điều này:

$("#parametersEmail").bind('blur', function(event) {}); 

$("#parametersEmail").bind('keyup', function(event) {}); 
2

(Reality với năm trước gần 2017-th)

Cách tốt nhất là để thiết lập một lần gọi lại trên tất cả các cần sự kiện về thay đổi giá trị đầu vào.

Có:

  • KeyUp: dùng gõ một cái gì đó trong đầu vào
  • thay đổi: phương pháp phổ biến được biết về những thay đổi được lưu giữ trong đầu vào
  • nhấp chuột: một số đầu vào mất thay đổi bằng cách chuột quá
  • dán : Yea! Ctrl + V, Crtl + Ins, RightMouseButton + Dán có thể thay đổi giá trị nhập quá
  • propertychange: khi một số JS thay đổi đầu vào của chúng tôi theo bất kỳ cách nào, sự kiện này sẽ kích hoạt đầu vào
  • : sự kiện tiêu chuẩn mới hỗ trợ tất cả trình duyệt hiện đại nó quá

vì vậy, chúng ta có thể đặt tất cả trong số họ một lần:

$("#parametersEmail").bind("propertychange change click keyup input paste", function(event) { 
    validateParameterEmail(); 
}); 

Hope this helps cho một ai đó. ;)

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