jquery - 如何使用锚标记进行所需的字段文件上传验证?
问题描述
我正在使用带有锚标记的 jquery 对文件上传字段进行客户端验证。但是表格在得到验证之前就被提交了,或者我可能遗漏了一些东西..有人可以帮我吗?
{% extends "base.html" %}
{% block content %}
<div class="container" xmlns="http://www.w3.org/1999/html">
<div class="row">
<div class="col-sm-6 banner-imageicon">
<img src="/static/images/data.png" class="img-responsive">
</div>
<div class="col-sm-6 banner-info">
<p class="big-text"> Excel Data Consolidation for Format 7</p>
</div>
<br>
<h2 align="center">Below are the fields which will be added in the consolidates format:</h2>
<p align ="center">Port of Loading (POL) and Origin City</p>
<p align="center">Port of Destination and Destination City</p>
<p align="center">Effective Date</p>
<p align="center">Freight Charges</p>
<p align="center">Expiry Date</p>
<p align="center">Surcharges Not Subject to</p>
<p align="right" class="Note">Note: By default commodity field is filled with the value-MSCUFAKOO1.</p>
<form method="POST" enctype="multipart/form-data" id="frm" name="frm">
{% csrf_token %}
<p align="center"><h3>Choose the file whose data has to be consolidated</h3></p>
<label for="file-upload" align="center">Browse....</label>
<input type="file" id="file-upload" name="file" style="display:none;" align="center" required>
<div id="file-upload-filename"></div>
<div class="button">
<a class="btn btn-first" href="#" id="submit" onclick="document.getElementById('frm').submit()">Submit</a>
<a class="btn btn-second" href="" onclick="document.getElementById('frm').reset()">Reset</a>
</div>
</form>
<script src="/static/js/jquery.js"></script>
<script src="/static/js/jquery.validate.js"></script>
<script src="/static/js/additional-methods.js"></script>
<script>
$(document).ready(function(){
console.log("from function")
$("#frm").validate({
ignore:[],
rules:{
file:{
required:true,
}
},
messages:{
file:{
required:"Please select the file"
}
},
submitHandler: function(form) {
}
});
$("#submit").click(function(e) {
e.preventDefault();
console.log("from submit");
$("#frm").submit();
});
});
</script>
<script>
var input = document.getElementById( 'file-upload' );
var infoArea = document.getElementById( 'file-upload-filename' );
input.addEventListener( 'change', showFileName );
function showFileName( event ) {
var input = event.srcElement;
var fileName = input.files[0].name;
infoArea.textContent = 'File name: ' + fileName;
}
</script>
</div>
</div>
{% endblock content %}
如果在选择文件之前提交了表单,我希望显示验证消息。但验证不起作用。
解决方案
我认为您错过了 html 部分中的“经典” onsubmit 属性。
<form action="/action_page.php" onsubmit="myFunction()">
Enter name: <input type="text" name="fname">
<input type="submit" value="Submit">
</form>
<script>
function myFunction() {
alert("The form was submitted");
}
</script>
另一种方法是编写一个自定义函数来读取表单并在读取值后进行检查。然后您还必须自己执行发送请求。好处:这现在也可以通过 ajax 或工作任务来完成。当然,您可以摆脱一些草率编码的 html 表单构造问题。
推荐阅读
- google-sheets - 谷歌表格功能比较两个值不起作用
- wordpress - .htaccess 文件非常频繁地使用拒绝代码进行更新,并导致仪表板损坏
- sql - BigQuery - 上个月的查找总和
- javascript - 如何禁用 ES6 项目中导入/导出的文件扩展名(“.js”)?
- javascript - 计算每天的平均值并存储在数组中以提供提供的时间范围
- c# - 使用相同的 dll 库,但版本不同(都具有相同的 PublicKeyToken)
- python - ModuleNotFoundError:没有名为“distutils”的模块
- node.js - 使用 Node/Express 解析 CSV 文件会吐出奇怪的 \x001 代码
- lua - 我正在尝试学习 ROBLOX lua 脚本,但有 1 个问题,我忘记了如何正确使用 Touch 事件
- php - 从深度数组 PHP 中检索值