2012-08-08 32 views
40

Mã này là:Làm thế nào để xử lý sự kiện onchange trên input type = file trong jQuery?

<input ID="fileUpload1" runat="server" type="file" 

Sau đây hoạt động tốt:

<input onchange="javascript:alert('hola');" ID="fileUpload1" runat="server" type="file" 

Tôi muốn để có được kết quả này sử dụng jQuery, nhưng điều đó không làm việc:

$('#fileUpload1').change(function (e) { 
    alert("hola"); 
}); 

Tôi đang thiếu cái gì đó? (Edit: Vâng tôi đã bỏ lỡ bao gồm các file * .js.)

+1

Id của nguyên tố này là ' "fileUpload1"' không ' "fileupload1"'. Bạn cũng đang chạy mã của bạn sau khi các yếu tố tồn tại và bạn đã bao gồm jQuery vv? Ngoài ra, hãy kiểm tra bảng điều khiển trình duyệt của bạn để tìm lỗi javascript. – Esailija

+0

Tôi đã tìm kiếm các từ khóa tương tự nhưng tôi đang tìm phiên bản "không có jQuery" ... –

Trả lời

2

Cố gắng sử dụng này:

HTML:

<input ID="fileUpload1" runat="server" type="file"> 

JavaScript:

$("#fileUpload1").on('change',function() { 
    alert('Works!!'); 
}); 

+2

Sai sự kiện và id sai. – Esailija

+0

Xin lỗi vì tôi không thấy vấn đề chính xác ... giờ hãy kiểm tra @Esailija –

4

Nó phải là w Ork tốt, bạn đang gói mã trong một cuộc gọi $(document).ready()? Nếu không sử dụng hoặc sử dụng live ví dụ:

$('#fileupload1').live('change', function(){ 
    alert("hola"); 
}); 

Đây là một jsFiddle của công tác này đối với jQuery 1.4.4

+3

trực tiếp không được dùng nữa, bạn nên sử dụng() ngày nay – Simon

+1

Anh ấy đang sử dụng v1.4.4 không hỗ trợ 'on()' – Chris

+3

'live' là không được chấp nhận cho tất cả các phiên bản jQuery, sử dụng '.delegate' – Esailija

3

jsfiddle này hoạt động tốt đối với tôi.

$(document).delegate(':file', 'change', function() { 
    console.log(this); 
}); 

Lưu ý: .delegate() là phương pháp event-binding nhanh nhất cho jQuery < 1.7: event-binding methods

+0

1.4.4. Công việc của Dosent. – anmarti

+0

đã cập nhật câu trả lời của tôi – Simon

8

Hoặc có thể là:

$('input[type=file]').change(function() { 
    alert("hola"); 
}); 

Để cụ thể: $('input[type=file]#fileUpload1').change(...

2
$('#fileupload').bind('change', function (e) { //dynamic property binding 
alert('hello');// message you want to display 
}); 

Bạn có thể sử dụng một trong này cũng

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