2012-12-14 50 views
10

Tôi cần phát hiện thời điểm có người truy cập "nhập" vào các mục nhập văn bản với một lớp cụ thể.Phát hiện nhập vào các yếu tố đầu vào của một lớp nhất định

jQuery của tôi là như sau:

$('input.large').keypress(function (e) { 
    if(e.which ==13) 
     console.log("pressed enter"); 
}); 

HTML của tôi là một cái gì đó như thế này:

<tr><td> Personal Name </td></tr> 
<tr><td> <input type='text' class='large'> </td></tr> 

<tr><td> Email</td></tr> 
<tr><td> <input type='text' class='large'> </td></tr> 

Khi tôi đã cho các lĩnh vực ID và cố gắng $('#elementid').keypress nó làm việc. Nhưng điều này không hiệu quả. Tôi không nhận được đầu ra console. Tôi đang thiếu gì?

+0

Bạn đã đặt mã của bạn trong bộ xử lý sẵn sàng tài liệu chưa? – undefined

+0

Tôi có. Mã khác ngay trước và sau này hoạt động tốt. – user961627

+0

Bạn có thể cung cấp bản demo trên http://jsfiddle.net không? – undefined

Trả lời

10

Bạn có thể sử dụng trực tiếp (.on()) sự kiện trong document với keydown (Tôi nghĩ điều này tốt hơn) . Nó sẽ cho phép bạn phát hiện keydown trong các yếu tố hiện tại và tương lai phù hợp với bộ chọn.

HTML:

<strong>Personal Name</strong> 
<input type='text' class='large' /><br /> 

<strong>Email</strong> 
<input type='text' class='large' /> 
​ 

JS (Runnable với jQuery 1.7+):

jQuery(document).on('keydown', 'input.large', function(ev) { 
    if(ev.which === 13) { 
     // Will change backgroundColor to blue as example 
     this.style.backgroundColor = '#EFF'; 

     // Avoid form submit 
     return false; 
    } 
}); 

jsFiddle: http://jsfiddle.net/qvhWD/

+0

Tôi nên đặt cái này ở đâu? Tôi đã thử nó bên trong '$ (document) .ready (function() {...});' và cũng ở bên ngoài nó, nhưng cả hai đều có lỗi cú pháp. – user961627

+0

Lỗi cú pháp này ở đâu?** Hãy thử **: tạo phần tử độc quyền '

2

việc kiểm tra này một: http://jsfiddle.net/EJyyr/

sử dụng html này:

<tr><td> Personal Name </td></tr> 
<tr><td> <input type='text' class='large' id='a'> </td></tr> 

<tr><td> Email</td></tr> 
<tr><td> <input type='text' class='large' id='b'> </td></tr> 

và đây là jQuery which logs the input text id

$('.large').keypress(function (e) { 
    if(e.which ==13) 
    console.log($(this).attr('id')); 
}); 
0

Cảm ơn David Rodrigues cho lời giải thích của bạn. Nó đã giúp rất nhiều. Tôi đã phải nâng cấp thư viện JQuery của tôi và .live() chức năng dừng lại để hoạt động đúng.

Bạn có thể sử dụng nó để sau

Chọn tất cả các đầu vào hộp kiểm của một hình thức khi nhấp chuột vào select_all_checkboxes loại đầu vào hộp kiểm:

jQuery(document).on("click", "#select_all_checkboxes", function(){ 
    var chk = this.checked; 
    $('input[id=selectAll]').each(function(){ 
     this.checked = chk; 
    }); 
}); 

Gọi một hàm "CHECKMAIL" khi người dùng phải rời sân ở sử dụng tab ou nhấp vào bất kỳ trường nào có tên lớp "email":

jQuery(document).on("blur", 'input.email', function(event){ 
    var email = $(this).val(); 
    if (!checkMail(email)) { 
     alert("Invalid email."); 
     $(this).focus(); 
    } 
}); 
+0

Trong khi câu trả lời của bạn được đánh giá cao, nhận xét về câu trả lời của người dùng khác chỉ là vậy. – J0e3gan

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