2013-08-01 30 views
16

Tôi đang kích hoạt tải lên tệp trên href.
Tôi đang cố chặn tất cả tiện ích ngoại trừ doc, docx và pdf.
Tôi không nhận được giá trị cảnh báo chính xác.Chỉ cho phép định dạng pdf, doc, docx để tải lên tệp?

<div class="cv"> Would you like to attach you CV? <a href="" id="resume_link">Click here</a></div> 
    <input type="file" id="resume" style="visibility: hidden"> 

Javascript:

 var myfile=""; 
     $('#resume_link').click(function() { 
      $('#resume').trigger('click'); 
      myfile=$('#resume').val(); 
      var ext = myfile.split('.').pop(); 
      //var extension = myfile.substr((myfile.lastIndexOf('.') +1)); 

      if(ext=="pdf" || ext=="docx" || ext=="doc"){ 
       alert(ext); 
      } 
      else{ 
       alert(ext); 
      } 
     }) 

MyFiddle ..its hiển thị lỗi

+0

Tôi không nghĩ rằng sẽ làm việc trong tất cả các trình duyệt. Nếu bạn sử dụng HTML5, bạn có thể sử dụng thuộc tính 'accept'. – putvande

+0

Fiddle của bạn không làm việc ở tất cả cho tôi. Bạn cần đóng ít nhất ''. – Rup

+0

@Rup '' thẻ tự đóng. –

Trả lời

13

Tốt hơn để sử dụng change sự kiện trên lĩnh vực đầu vào.

nguồn Cập nhật:

var myfile=""; 

$('#resume_link').click(function(e) { 
    e.preventDefault(); 
    $('#resume').trigger('click'); 
}); 

$('#resume').on('change', function() { 
    myfile= $(this).val(); 
    var ext = myfile.split('.').pop(); 
    if(ext=="pdf" || ext=="docx" || ext=="doc"){ 
     alert(ext); 
    } else{ 
     alert(ext); 
    } 
}); 

Cập nhật jsFiddle.

+0

không không không ... chính xác ..tôi vừa mắc lỗi trong khi tải lên cú pháp –

+0

OK, đủ công bằng. Xin vui lòng sửa chữa fiddle của bạn, hoặc cho chúng tôi biết những gì bạn đang thực sự nhìn thấy lỗi (hành vi và lỗi kịch bản), hoặc cả hai - bởi vì nó không phải là hiện tại có thể cho chúng tôi để tái sản xuất nó. – Rup

+0

fiddle của tôi không hoạt động hiển thị lỗi '{" lỗi ":" Vui lòng sử dụng yêu cầu POST "}' ... và tôi không thể nhận cảnh báo về tiện ích của mình ?? không có lỗi cú pháp .. –

0

Cố gắng này

$('#resume_link').click(function() { 
     var ext = $('#resume').val().split(".").pop().toLowerCase(); 
     if($.inArray(ext, ["doc","pdf",'docx']) == -1) { 
      // false 
     }else{ 
      // true 
     } 
    }); 

Hy vọng nó sẽ giúp

+0

Bạn có thể làm nổi bật những gì bạn đã thay đổi không? Ngoài refactor/rearrange nó trông giống như nó chỉ là 'toLowerCase()'? – Rup

+0

@Rup if ($. InArray (ext, ["doc", "pdf", 'docx']) == -1) nhìn ở đây –

+0

bạn vừa tách nó ra khỏi câu hỏi khác ... tôi chỉ nhìn thấy câu trả lời chính xác trên một số câu hỏi khác .. –

42

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

<input name="Upload Saved Replay" type="file" 
    accept="application/pdf,application/msword, 
    application/vnd.openxmlformats-officedocument.wordprocessingml.document"/> 

whearat

  • application/pdf nghĩa .pdf
  • application/msword nghĩa .doc
  • application/vnd.openxmlformats-officedocument.wordprocessingml.document nghĩa .docx

để thay thế.

[EDIT] Được cảnh báo, .dot cũng có thể khớp.

+0

là trình duyệt chéo này có tương thích không ??? –

+0

điều này sẽ chấp nhận doc và docx ... và tôi không cần phải viết bất kỳ xác nhận cho điều này? –

+0

Hãy xem, nếu client-os không biết loại mime-type '.pdf' là gì, nó sẽ không hiển thị các tệp' .pdf' để chọn! Bạn có thể sử dụng 'navigator.mimeType' để đánh giá góc này. –

0
var file = form.getForm().findField("file").getValue(); 
var fileLen = file.length; 
var lastValue = file.substring(fileLen - 3, fileLen); 
if (lastValue == 'doc') {//check same for other file format} 
0

$('#surat_lampiran').bind('change', function() { 
 
    alerr = ""; 
 
    sts = false; 
 
    alert(this.files[0].type); 
 
    if(this.files[0].type != "application/pdf" && this.files[0].type != "application/msword" && this.files[0].type != "application/vnd.openxmlformats-officedocument.wordprocessingml.document"){ 
 
    sts = true; 
 
    alerr += "Jenis file bukan .pdf/.doc/.docx "; 
 
} 
 
});

0

Bạn chỉ có thể làm cho nó bằng cách REGEX:

Mẫu:

<form method="post" action="" enctype="multipart/form-data"> 
    <div class="uploadExtensionError" style="display: none">Only PDF allowed!</div> 
    <input type="file" name="item_file" /> 
    <input type="submit" id='submit' value="submit"/> 
</form> 

Và kịch bản java xác nhận:

<script> 
    $('#submit').click(function(event) { 
     var val = $('input[type=file]').val().toLowerCase(); 
     var regex = new RegExp("(.*?)\.(pdf|docx|doc)$"); 
     if(!(regex.test(val))) { 
      $('.uploadExtensionError').show(); 
      event.preventDefault(); 
     } 
    }); 
</script> 

Chúc mừng!

-1

Dưới đây đang làm việc cho tôi:

<input #fileInput type="file" id="avatar" accept="application/pdf,application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document" /> 

application/pdf means .pdf 
application/msword means .doc 
application/vnd.openxmlformats-officedocument.wordprocessingml.document means .docx 
Các vấn đề liên quan