2013-07-15 36 views
13

Tôi muốn làm (HTML) 'file' yếu tố đầu vào bắt buộc: một cái gì đó giống nhưLàm 'tập tin' bắt buộc (bắt buộc)

<input type='file' required = 'required' .../> 

Nhưng nó không phải đang làm việc.

Tôi đã thấy hướng dẫn sử dụng WW3 tuyên bố thuộc tính 'bắt buộc' mới đối với HTML 5. Nhưng tôi không sử dụng HTML 5 trong dự án tôi đang làm việc không hỗ trợ tính năng mới.

Bất kỳ ý tưởng nào?

+0

Bạn sẽ cần JavaScript. –

+0

@MadaraUchiha tùy chọn javascript cũng tốt. Làm ơn nói đi. – Bere

+0

Vui lòng cung cấp thêm tệp HTML. Tôi cho rằng bạn có một nút gửi ở đâu đó? Đính kèm một hàm javascript xác nhận xem trường nhập tệp có trống hay không và nếu trống thì sẽ trả về một thông báo lỗi. – Tro

Trả lời

8

Bạn có thể làm điều đó bằng jquery như thế này: -

<script type="text/javascript"> 
$(document).ready(function() { 
    $('#upload').bind("click",function() 
    { 
     var imgVal = $('#uploadfile').val(); 
     if(imgVal=='') 
     { 
      alert("empty input file"); 
      return false; 
     } 


    }); 
}); 
</script> 

<input type="file" name="image" id="uploadfile" size="30" /> 
<input type="submit" name="upload" id="upload" class="send_upload" value="upload" /> 
+0

Cảm ơn. Nhưng hình dạng là một phức tạp. Tôi muốn giải pháp của tôi độc lập với bất kỳ phần tử nào khác (form) nhất có thể.Tôi không muốn sử dụng (liên kết nó với) nút 'gửi' (hoặc bất kỳ thuộc tính nào của nó). Còn cách nào khác không? – Bere

+0

Bạn có thể đăng cấu trúc biểu mẫu không? –

+0

Các phần tử và thuộc tính của chúng được định nghĩa trong tệp XML của Joomla. Các yếu tố biểu mẫu tên và id được thay đổi/thao tác bởi CMS trước khi nó được hiển thị. Tôi sợ nếu ai đó thay đổi tên của phần tử biểu mẫu được giới thiệu trong XML, cặp tên/id hoàn toàn khác có thể được tạo ra. Kết quả là tôi có thể mất kết nối. Tôi ít nhất muốn yếu tố trở nên độc lập với việc đặc biệt dựa vào yếu tố hình thức khác. – Bere

3
var imgVal = $('[type=file]').val(); 

Tương tự như gợi ý Vivek, nhưng bây giờ bạn có một chọn chung chung hơn của tập tin đầu vào và bạn không dựa vào ID cụ thể hoặc lớp học.

See this demo.

+1

Đây không thực sự là câu trả lời cho câu hỏi. – Pere

3

Bạn có thể tạo một polyfill thực hiện trên gửi biểu mẫu. Ví dụ:

/* Attach the form event when jQuery loads. */ 
$(document).ready(function(e){ 

/* Handle any form's submit event. */ 
    $("form").submit(function(e){ 

     e.preventDefault();     /* Stop the form from submitting immediately. */ 
     var continueInvoke = true;   /* Variable used to avoid $(this) scope confusion with .each() function. */ 

     /* Loop through each form element that has the required="" attribute. */ 
     $("form input[required]").each(function(){ 

      /* If the element has no value. */ 
      if($(this).val() == ""){ 
       continueInvoke = false;  /* Set the variable to false, to indicate that the form should not be submited. */ 
      } 

     }); 

     /* Read the variable. Detect any items with no value. */ 
     if(continueInvoke == true){ 
      $(this).submit();    /* Submit the form. */ 
     } 

    }); 

}); 

Kịch bản này chờ đợi đối với hình thức phải nộp, sau đó vòng mặc dù mỗi yếu tố hình thức mà có thuộc tính required có giá trị nhập vào. Nếu mọi thứ đều có giá trị, nó sẽ gửi biểu mẫu.

Một yếu tố ví dụ để được kiểm tra có thể là:

<input type="file" name="file_input" required="true" /> 

(Bạn có thể loại bỏ những ý kiến ​​& giảm bớt mã này khi sử dụng nó trên trang web của bạn)

2

Tính đến bây giờ trong năm 2017, tôi có thể để làm điều này-

<input type='file' required /> 

và khi bạn gửi biểu mẫu, nó sẽ yêu cầu tệp. Screenshot on Google Chrome

+0

Tôi thích ý tưởng nhưng điều này không có tác dụng trong trường hợp của tôi (biểu mẫu trong Laravel). Thật không may:/ – daneczech

+0

@daneczech có lẽ bạn đã không kết thúc bằng thẻ '

' trong 'html' của bạn – Ibo

1

Nhờ HTML5, nó là dễ dàng như thế này:

<input type='file' required /> 

Ví dụ:

<form> 
 
    <input type='file' required /> 
 
    <button type="submit"> Submit </button> 
 
</form>

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