這裏是我的JavaScript:的JavaScript沒有被調用的內聯事件處理程序
<script>
//Make sure DOM is ready before mucking around.
$(document).ready(function()
{
console.log('DOM is ready!');
var socket = io.connect('http://localhost:8080');
//Each document field will have the following identifiers:
//classCode, description, professor, file
function uploadForm()
{
console.log('Creating FileReader object...');
var reader = new FileReader();
reader.onload = function(evt)
{
console.log('Read complete.');
console.log('Creating JSON object...')
var documentData =
{
'classCode':$('#classCode').val(),
'professor':$('#professor').val(),
'description':$('#description').val(),
'file':
{
'data': evt.target.result,
'metadata': document.getElementById('file').files[0]
},
'dateUploaded':new Date(),
'rating':0
};
console.log(documentData);
console.log('Adding document.');
socket.emit('addDocument', documentData);
};
console.log('Reading as binary string...');
reader.readAsDataURL(document.getElementById('file').files[0]);
};
});
</script>
我的HTML表單:
<form onsubmit = 'uploadForm()'>
<input type = 'text' placeholder = 'Class code' id = 'classCode' required/>
<input type = 'text' placeholder = 'Document description' id = 'description' required/>
<input type = 'text' placeholder = 'Professor' id = 'professor' required/>
<input type = 'file' id = 'file' required/>
<input type = 'submit' value = 'Upload!'/>
</form>
當我通過在一個.click
事件調用uploadForm()
此代碼是之前工作<input type='submit'>
元素,但會忽略<form>
對<input>
元素的必需屬性檢查。所以現在我試圖在<form>
的提交事件上致電uploadForm()
,但它運行不正常。 reader.onload
事件應在reader.readDataAsURL()
完成後調用,但事實並非如此。我已經試過jQuery的.submit()
無濟於事。
編輯:最後用我的手機抓到錯誤錄音吧。 Uncaught ReferenceError: uploadForm is not defined
還不行。我也試過onsubmit ='uploadForm();',onsubmit ='uploadForm()',onSubmit ='uploadForm();'和onSubmit ='uploadForm()' – crzrcn