1
我是新來淘汰js和試圖編寫自定義驗證的文件輸入從客戶端使用淘汰賽JS和文件API。主要目的是驗證文件擴展名和文件大小,並在發生驗證錯誤時清除文件輸入路徑。輸入文件驗證與淘汰賽的JS和文件API
下面是使用純javascript完成的代碼。感謝有人能伸出援助之手。
function FileAPIViewModel() {
var self = this;
}
ko.applyBindings(new FileAPIViewModel());
$('#i_file').change(function() {
//check whether browser fully supports all File API
if (window.File && window.FileReader && window.FileList && window.Blob)
{
//get the file size and file type from file input field
var fsize = $('#i_file')[0].files[0].size;
var ftype = $('#i_file')[0].files[0].type;
if(fsize>10)
{
alert(fsize +" bites\nToo big!");
$('#i_file').val('');
}
switch(ftype)
{
case 'image/png':
case 'image/gif':
break;
default:
alert('Unsupported File!');
$('#i_file').val('');
}
}else{
alert("Please upgrade your browser, because your current browser lacks some new features we need!");
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.2.0/knockout-min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout-validation/2.0.3/knockout.validation.min.js"></script>
<input type="file" input="" id="i_file" />
<input type="button" value="Submit" id="i_submit" />
艱難的,你可以用KO的方式簡單'變化event'實現。嘗試像這樣http://jsfiddle.net/LkqTU/26692/。讓我們知道 –
@supercool感謝您的反饋。但我試圖利用knockout.validation插件(自定義驗證規則)來實現此驗證,其中它是可重用的,並將錯誤消息解析爲ValidationMessage屬性,而不是簡單的警告框。 – vincentsty
好的,你有多個輸入類型'文件'控制?在你的頁面上,你嘗試對這些應用驗證 –