我有一個輸入類型來輸入網址和一個選擇標記來選擇網址類型。 現在我要檢查,如果選擇的類型和輸入的URL匹配與否,就像一個人不應該能夠輸入Instagram的路徑,選擇URL類型如Facebook。如何驗證JavaScript中的網址?
所以我想驗證這一點。我試圖使用一種功能來驗證,它是正常工作,以驗證網址,但我也想驗證Facebook和Instagram,如果它是照片的網址或視頻網址。
現在,它通常會驗證facebook.com。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Post</title>
</head>
<body>
<form class="postForm" id="postForm" method="post" action="addPost.php" enctype="multipart/form-data">
<fieldset>
<legend>Please add the details below </legend>
<p>
<div id="link" style="display: none">
<p>
<label for="url">URL (required)</label>
<input id="url" type="url" name="url" required>
</p>
<p>
<label for="urlType">Select Url Type :(required)</label>
<select name="urlType" id="urlType">
<option value="">Select Url Type...</option>
<!-- <option value="0">Server Image</option>
<option value="1">Server Video</option>-->
<option value="2">YouTube Video</option>
<option value="3">Vimeo Video</option>
<option value="4">Facebook Image</option>
<option value="5">Facebook Video</option>
<option value="6">Instagram Image</option>
<option value="7">Instagram Video</option>
<option value="-1">Other</option>
</select>
</p>
</div>
<div id="filediv" style="display: none">
Select file to upload:
<br><br>
<input name="file" type="file" id="fileToUpload"><br><br>
</div>
<p>
<input type="hidden" name="action_type" id="action_type_id"/>
<input type="hidden" name="id" id="p_id"/>
<input type="submit" name="submit" id="submit" value="Submit">
</p>
</fieldset>
<div class="result" id="result"></div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdn.jsdelivr.net/jquery.validation/1.16.0/jquery.validate.min.js"></script>
<script>
$('#postForm').validate({ // initialize the plugin
rules: {
title: {
required: true,
minlength : 2
},
url: {
required: true
},
desc: {
required : true,
minlength : 2
},
keywords : {
required : true,
minlength : 2
},
urlType :
{
required : true
},
postType :
{
required : true
},
category :
{
required : true
},
file :
{
required : true
}
},
submitHandler: function (form) { // for demo
var url = document.getElementById('urlType').value;
if(validate_url(document.getElementById('url').value) == 'facebook' && url != 4)
{
alert('Please enter valid facebook image url or select valid url type.');
}
else if(validate_url(document.getElementById('url').value) == 'facebook' && url != 5)
{
alert('Please enter valid facebook video url or select valid url type.');
}
else if(validate_url(document.getElementById('url').value) == 'instagram' && url != 6)
{
alert('Please enter valid instagram image url or select valid url type.');
}
else if(validate_url(document.getElementById('url').value) == 'instagram' && url != 7)
{
alert('Please enter valid instagram video url or select valid url type.');
}
else if(validate_url(document.getElementById('url').value) == 'vimeo' && url != 3)
{
alert('Please enter valid vimeo video url or select valid url type.');
}
else if(validate_url(document.getElementById('url').value) == 'youtube' && url != 2)
{
alert('Please enter valid youtube video url or select valid url type.');
}
else {
userAction('add');
}
}
});
function userAction(type,id){
var statusArr = {add:"added",edit:"updated",delete:"deleted"};
if (type == 'add') {
$('#action_type_id').val(type);
$('#p_id').val(id);
}
$.ajax({
type: 'POST',
url: 'addPost.php',
data: $('#postForm').serialize(),
success:function(report){
// replace data to report
$(".result").html(report);
$("#postForm").trigger('reset');
}
});
}
function validate_url(url)
{
if (/^(https?:\/\/)?((w{3}\.)?)facebook.com\/.*/i.test(url))
return 'facebook';
if (/^(https?:\/\/)?((w{3}\.)?)instagram.com\/.*/i.test(url))
return 'instagram';
if (/^(https?:\/\/)?((w{3}\.)?)vimeo.com\/.*/i.test(url))
return 'vimeo';
if (/^(https?:\/\/)?((w{3}\.)?)youtube.com\/.*/i.test(url))
return 'youtube';
return 'unknown';
}
</script>
</form>
</body>
</html>
我如何可以驗證鏈路是否爲Facebook圖片,Facebook的視頻或圖像的Instagram,Instagram的視頻?
請幫助..謝謝。
當你說',Facebook的video' ......你的意思是,如果它被Facebook託管的視頻或圖像驗證鏈路是否爲Facebook的形象? Facebook有很多CDN,所以你必須驗證各種URL模式,你不能保證它們會保持不變。即'scontent.fsnc1-1.fna.fbcdn.net'是一個潛在的域 – aug
是要驗證它是否@aug – Sid