2016-11-18 13 views
16

Làm cách nào để tạo biểu mẫu Nhập URL yêu cầu đầu vào là cả URL hợp lệ và kết thúc bằng một loại tệp cụ thể.Nhập HTML: Yêu cầu URL để kết thúc theo loại tệp cụ thể

Ví dụ, đây là đầu vào của tôi:

<input name="bg" placeholder="https://website.com/image" type="url">

Như bạn thấy, Nó được sử dụng nhập URL, trong đó hạn chế nó vào một http hợp lệ: // domain, nhưng tôi muốn các trường nhập để chỉ chấp nhận các tệp .png, .jpg và .gif.

Điều này có thể đạt được thông qua html hoặc javascript và nếu có, làm cách nào?

Cảm ơn!

+1

Vì vậy, những gì đầu vào nào bạn cần? Url hoặc hình ảnh? –

+0

@CommercialSuicide Nó cần phải là một liên kết hình ảnh như http://domain.com/image.png, do đó, nó cần phải ở lại như một đầu vào URL, nhưng chỉ chấp nhận liên kết hình ảnh. –

+2

Bất kỳ phương pháp xác thực JavaScript nào cũng có thể dễ dàng bị vô hiệu hóa/ghi đè bởi một scriptkiddy phong nha. Chấp nhận xác thực JavaScript là người trợ giúp cho người dùng không độc hại (bạn giảm số lượng cuộc gọi đến máy chủ trong khi cho họ biết về các lỗi/giới hạn phổ biến), không phải là cách loại trừ người dùng độc hại. Bạn chỉ có thể xử lý các phía máy chủ đó. –

Trả lời

17

Bạn không thực sự cần javascript đây, bạn có thể sử dụng pattern thuộc tính cho (CSS tôi đã thêm vào chỉ là ví dụ) input của bạn:

input:valid { 
 
    border: 1px solid green; 
 
} 
 

 
input:invalid { 
 
    border: 1px solid red; 
 
}
<input name="bg" placeholder="https://website.com/image" type="url" pattern="https?:\/\/(www\.)?[[email protected]:%._\+~#=]{2,256}\.[a-z]{2,4}\b([[email protected]:%_\+.~#?&//=]*)(.jpg|.png|.gif)">

+1

Tôi không nghĩ rằng regex này là đúng. Nó xác thực 'http: // hello.com.jpg' một cách chính xác. Bạn không chắc chắn làm thế nào để sửa nó mặc dù:/ – TheChetan

+0

Đối với bất cứ ai muốn có một đâm vào nó. https://jex.im/regulex/ http://regexr.com/ có thể hữu ích. Nếu không có Quantifier Captures trong JavaScript REGEX. Đó là một hạt khó khăn để crack .http: //www.rexegg.com/regex-quantifier-capture.html. Tôi nghĩ rằng regex có thể được đơn giản hóa với \. (Jpg | png | gif) ở cuối và double // trông sai chỉ 1 cần thiết phải không? – JGFMK

3

Bạn có thể đạt được điều này bằng cách sử dụng regex, bạn cũng sẽ muốn kiểm tra phía máy chủ này trong trường hợp người dùng đã tắt javascript.

Javascript

$("#imageUrl").change(function() { 
    var t = $("#imageUrl").val() 
    var expression = https?:\/\/(www\.)?[[email protected]:%._\+~#=]{2,256}\.[a-z]{2,4}\b([[email protected]:%_\+.~#?&//=]*)(.jpg|.png|.gif); 
    var regex = new RegExp(expression); 
    if (t.match(regex)) { 
     alert("Successful match"); 
    } else { 
     alert("No match"); 
    } 
}); 

HTML

<input id="imageUrl" name="bg" placeholder="https://website.com/image" type="url"> 
3

Vui lòng xem qua mã bên dưới, bạn sẽ nhận được url hình ảnh hợp lệ hoặc không hợp lệ bằng cách làm mờ hộp văn bản.

function TextBoxChange() 
 
{ 
 
var textboxValue=$("input[name=bg]").val(); 
 
var pattern=/https?:\/\/.*\.(?:png|jpg|gif)/i; 
 
//alert(/https?:\/\/.*\.(?:png|jpg|gif)/i.test(textboxValue)); 
 
if(pattern.test(textboxValue)) 
 
{ 
 
$("#errorMsg").text("valid"); 
 
} 
 
else 
 
{ 
 
$("#errorMsg").text("invalid"); 
 
} 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input name="bg" placeholder="https://website.com/image" onblur="TextBoxChange()" type="url" > 
 
<label id="errorMsg"></label>

+0

'https: //. Jpg' hợp lệ. Bạn có thể muốn xem lại nó. – TheChetan

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