javascript - 使用 JS 对 HTML 表单进行文件类型验证后,如果无效,控件应保留在同一页面上

标签 javascript jquery html

我有一个 html form,对于文件类型,我只需要 pdf、docx 和 doc 文件。我成功地进行了验证,但是单击“确定”按钮后,如果表单无效,我不想发布该表单。目前,它将转到connection.php。当我成功通过验证时,它应该只转到connection.php。

<form method="POST" action="connection.php" enctype="multipart/form-data" onsubmit="function()">
<input type="text" id="name" name="bookname" placeholder="Book Name" required/>
<textarea cols="25" rows="4" name="bookdesc" placeholder="Book Description" required></textarea>
<input type="text" id="password" name="bookauthor" placeholder="Book Author"/ required>
<input type="file" name="bookfile" id="bookfile" required/>
</form>
    <script>
        $(document).ready(function () {
        $('input[type=file]').change(function () {
        var val = $(this).val().toLowerCase();
        var regex = new RegExp("(.*?)\.(docx|doc|pdf)$");
         if(!(regex.test(val))) {
        $(this).val('');
        alert('Please select correct file format');
        } }); });
    </script> 

最佳答案

使用onsubmit事件:

<form method="POST" action="connection.php" enctype="multipart/form-data" onsubmit="return validate()">
<input type="text" id="name" name="bookname" placeholder="Book Name" required/>
<textarea cols="25" rows="4" name="bookdesc" placeholder="Book Description" required></textarea>
<input type="text" id="password" name="bookauthor" placeholder="Book Author"/ required>
<input type="file" name="bookfile" id="bookfile" required/>
<input type="submit" value="Upload book">
</form>
<script>
    function validate() {
    var val = document.getElementById('bookfile').value.toLowerCase();
    var regex = new RegExp("(.*?)\.(docx|doc|pdf)$");
        if(!(regex.test(val))) {
            document.getElementById('bookfile').value = '';
            alert('Please select correct file format');
            return false;    
        }
        return true;
    }
</script> 

关于javascript - 使用 JS 对 HTML 表单进行文件类型验证后,如果无效,控件应保留在同一页面上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44993812/

相关文章:

javascript - 如何在jquery中的esc按键上隐藏div数组

javascript - 如何在 JavaScript 中不在元素上绑定(bind)点击监听器

javascript - jQuery 事件处理程序仅适用于 Firefox

html - 背景颜色在 Chrome 移动浏览器中不起作用

javascript - 如何在 Angular js 中的同一位置将 HTML 模板替换为另一个模板?

javascript - 在 JavaScript 中,条件语句中 OR 运算符的正确语法是什么?我错过了什么?

javascript - 获取标签文本并将其设置为输入值[为什么输入值只获取空格之前的文本? ]

javascript - 如何更改点击或提交表单时的网址

jquery - 鼠标悬停在另一个元素上时更改 div 的 HTML

javascript - 在 HTML 代码中查找数字