2012-01-05 42 views
5

Tôi đang bối rối như những gì đang xảy ra ở đây ... nó phải là cơ bản, nhưng tôi không thể tìm ra nó.jquery trigger blur không hoạt động đúng không?

Tôi đang chuẩn bị biểu mẫu với một số thông tin cần được kiểm tra đối với cơ sở dữ liệu. Khi tải biểu mẫu, tôi muốn javascript chạy các sự kiện "làm mờ" cho hai hộp nhập liệu mà tôi cần xác minh.

Đây là những gì đang diễn ra. Khi biểu mẫu tải tất cả dữ liệu hiển thị đúng cách, nhưng sự kiện kích hoạt ("mờ") cho cả đầu vào "tên người dùng" và "email" sẽ không được kích hoạt. Tuy nhiên, nếu tôi đặt con trỏ vào từng đầu vào theo cách thủ công rồi nhấn phím tab hoặc nhấp vào bên ngoài hộp, sự kiện "mờ" sẽ được kích hoạt.

Tôi cần nó cũng kích hoạt khi tải trang để cảnh báo người dùng nếu dữ liệu được điền trước xung đột với dữ liệu hiện có ... bất kỳ ý tưởng nào tôi đang làm sai hoặc cách thực hiện công việc này?

Xin cảm ơn trước.

<script type="text/javascript"> 
    $(document).ready(function(){ 
     //Username 
     $("#username").blur(function(){ 
      $("#usr_available_msg").html("Checking").addClass("error_msg ui-state-error"); 
     }); 

     //email 
     $("#email").blur(function(){ 
      $("#email_available_msg").html("Checking").addClass("error_msg"); 
     }); 

     //Run validation check on page load 
     $("#username").trigger("blur"); 
     $("#email").trigger("blur"); 
    }); 
</script> 
+1

tôi đặt này trong một jsfiddle và phương thức làm mờ trên trang tải giống như mong đợi.http: //jsfiddle.net/rawsmell/29JFk/1/. Chính xác thì điều gì không hiệu quả? – Rondel

Trả lời

4

Tại sao không thực hiện chức năng 'kiểm tra' của bạn khỏi sự kiện mờ cho tên người dùng và các yếu tố email và đặt chúng vào chức năng hoặc chức năng được đặt tên riêng? Sau đó, gọi hàm trên các sự kiện tải trang và làm mờ (đối với hai phần tử đó). Mã của bạn đang hoạt động bình thường kể từ khi tải trang bạn đang kích hoạt mờ trên thứ gì đó không bao giờ có tiêu điểm để bắt đầu.

+0

ý tưởng tốt ... Tôi là một thằng ngốc ... Tôi chỉ tìm ra tôi xác nhận trước khi tôi thực sự cư mẫu ... lời xin lỗi của tôi đã lãng phí thời gian của bạn. – Ronedog

1

Điều này sẽ hoạt động như mong đợi.

Hãy thử đoạn mã sau trong tệp mới và kiểm tra ... Nếu nó hoạt động tốt thì vấn đề là với một khối mã khác trên cùng một trang đang gây ra sự cố này.

  • Tạo một trang HTML
  • Thêm jQuery tập tin script đơn giản để nó
  • Thêm một đầu vào với id "testinput"
  • Add script sau

    $(document).ready(function(){ 
        $("#testInput").blur(function(){ 
         alert(1); 
        }); 
    
        $("#testInput").trigger("blur"); 
    }); 
    
+0

cảm ơn câu trả lời. nó hoạt động, tôi đã có logic theo thứ tự sai ... phải mất một lúc để thấy một cái gì đó rất đơn giản. cảm ơn vì đã trả lời. – Ronedog

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