2012-07-01 23 views
7

Tôi có một div và khi người dùng nhấp vào div một chức năng nên được gọi. Và khi người dùng nhấp vào một cái gì đó khác (bất cứ điều gì khác hơn div này) một chức năng khác nên được gọi.Có thể viết trên trình xử lý Focus/lostFocus cho DIV bằng JS hay jQuery không?

Vì vậy, về cơ bản tôi cần có các cuộc gọi hàm onFocus() và lostFocus() được liên kết với DIV này. Nó có sẵn trong JavaScript hay thậm chí trong jQuery không?

Cảm ơn.

+0

lý do tại sao bạn cần onFocus nếu bạn muốn gọi hàm trên sự kiện Click? –

+0

@Mohammad, Có, tôi có thể sử dụng sự kiện Nhấp thay vì onFocus. Nhưng vấn đề là, tôi cần phải có sự kiện lostFocus hoặc một cái gì đó tương tự như nó. Bất kỳ ý tưởng? – Ivin

+0

xem câu trả lời của tôi bên dưới. –

Trả lời

16

Ở đây tôi tạo ra một bản demo làm việc của những gì bạn muốn http://jsfiddle.net/kPbfL/1/

Bạn cần phải thêm tabindex thuộc tính để div:

Markup :

<div id="mydiv" tabindex="-1"></div> 

Javascript

$("#mydiv").focusin(function() { 
  $("#mydiv").css("background","red"); 
}); 
$("#mydiv").focusout(function() { 
  $("#mydiv").css("background","white"); 
}); 

CSS

#mydiv{ 
width : 50px; 
    height:50px; 
    border : 1px solid red; 
}​ 
​ 
+1

Chỉ sử dụng 'jsfiddle' cho mục đích demo. Viết toàn bộ mã của bạn trong câu hỏi đó. – Jashwant

+0

@Mohammad, Jashwant Cảm ơn rất nhiều về câu trả lời đó. Tôi đã xem bản trình diễn jsfiddle Chính xác những gì tôi muốn. Nhưng SADLY, phương pháp này isnt làm việc trong mã của tôi Nó nói => $ ("# mydiv"). focusin không phải là một hàm. – Ivin

+1

@Orbb, hãy thử điều này [http://jsfiddle.net/kPbfL/3/](http://jsfiddle.net/kPbfL/3/) –

5

Focus không làm việc trên DIV: http://api.jquery.com/focus/

cũng tốt đọc: jquery : focus to div is not working

If you want to focus a div or anything normally can't be focused, set the tag's tabindex to -1 first. 
eg: $("div#header").attr("tabindex",-1).focus(); 
+0

Phương pháp của bạn hoạt động và tôi đã tập trung() làm việc. Bây giờ làm thế nào tôi có thể thực hiện lostFocus()? blur() không hoạt động. – Ivin

+0

@Orbb Vui vì nó đã giúp: ở đây bạn nên lấy mã cho tập trung bị mất/tập trung ra khỏi đây: http://stackoverflow.com/questions/3088738/jquery-need-alternative-to-focusout ':)' –

+0

supercool! Tôi không biết rằng 'tabindex' hack :) – Jashwant

-1

chắc.

$("#your-div-id").focusin(function() { 
    // code here 
}); 

$("#your-div-id").focusout(function() { 
    // code here 
}); 
+0

nó không hoạt động. Tôi đã thử nó như bạn đề nghị. Sau đó, tôi đã thử nó với bind/live vì div được tạo động. Nhưng không! :( – Ivin

0

Không chắc chắn nếu giải pháp này phù hợp với trang web của bạn, nhưng bạn có thể sử dụng JQuery on() để đính kèm sự kiện nhấp vào phần tử nội dung và ủy quyền cho phần tử con. Sau đó, trong trình xử lý sự kiện của bạn, hãy kiểm tra thuộc tính id và xử lý như vậy; cái gì đó như:

$(body).on("click", "div", function (evt) { 
    if ($(this).attr("id") == "innerDiv") { 
      handle inner div click here 
    } else { 
      hanlde out div click here 
    { 
} 

Hope this helps ...

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