表单验证问题,包括输入文件
issue with form validation including input file
我有一个非常简单的表单来输入用户名并选择要上传的文件。用户名是必需的,但文件不是。它具有样式,并具有在提交表单前检查文件类型和大小的功能。如果您选择了错误的文件,该功能将起作用,并且提交按钮将被禁用。如果不选择文件,则用户名验证将不起作用。如果你点击文本输入,然后模糊它将变为红色,但表单将提交。JSFIDDLE
HTML
<form method="post" class="contact" onsubmit="return validate();" enctype="multipart/form-data">
<table cellspacing="30">
<tr>
<td>
<label id="userlabel">user name</label>
<input type="text" id="user" name="username" onblur="checkUser()"></td>
</tr>
<tr>
<td>
<div id="FileUpload">
<input type="file" size="4" id="BrowserHidden"
onchange="getElementById('FileField').value = getElementById('BrowserHidden').value;" name="pic" />
<div id="BrowserVisible"><input type="text" id="FileField" /></div>
</div>
</td>
</tr>
<tr>
<td><input type="submit" name="send" id="save" value="send" /></td>
</tr>
</table>
</form>
JS-
function checkUser(){
var userlen = $("#user").val().length;
if(userlen<4){
$("#userlabel").css("color","rgb(224, 19, 19)");
return false;
}
else{
$("#userlabel").css("color","#000");
return true;
}
}
$("#BrowserHidden").change(function (e) {
var file = this.files[0];
var name = file.name;
var extension = name.substr((name.lastIndexOf('.') + 1));
var str = 'doc,docx,pdf';
if (str.indexOf(extension) > -1) {
console.log('y');
size = file.size;
console.log(size);
if (size > 10000000) {
alert('file size is larger than 10 MB');
$("#save").attr("disabled", "disabled");
return false;
}
else {
$("#save").removeAttr("disabled");
return true;
}
}
else {
alert('file type is not allowed');
$("#save").attr("disabled", "disabled");
return false;
}
});
function validate(){
$.each($('form :input'),function(){
$(this).blur().change();
});
if(!checkUser() ){
return false;
}
else{
return true;
}
}
这就是让它工作的方法:
- 将提交按钮更改为普通按钮,并为其添加
onclick
属性 - 从
form
标记中删除onsubmit
属性 - 如果
checkUser()
返回true,请将validate()
函数更改为提交表单
就是这样!
Fiddle
希望这对你有用!
相关文章:
- 我想在选择输入文件上显示图像
- 触发IE9中的输入文件点击
- 将图像数据设置为输入文件标记
- Asp-mvc剃刀将输入文件的值存储在文本框中
- 选择同一文件时未触发HTML输入文件选择事件
- 从Javascript中的输入文件中获取文件名
- 输入文件和自动提交 - 播放框架 2.
- 将 FormData 对象放入数组中以从不同的输入文件上载文件
- 警报输入“文件”文件名,使用 jQuery 和“split”
- 检查是否对任何输入文件进行了更改
- 仅获取所选输入文件的名称
- 如何在Joomla模块中通过JavaScript发送输入文件类型
- Javascript将输入文件传递给PHP
- 触发AngularJS中的输入文件点击事件
- 输入文件:如何在刷新后显示文件名
- Angular 2-模型驱动的表单,带有输入文件(文件上传)
- 如何制作一个输入文件以供使用
- 将html输入文件元素从一个表单复制到另一个表单
- 如何在jquery中清除输入文件字段
- 在3个输入文件中加载img