jquery阻止表单提交
我正试图上传一个文件。并使用此代码对其进行验证jquery阻止表单提交,jquery,validation,Jquery,Validation,我正试图上传一个文件。并使用此代码对其进行验证 $(document).ready(function () { $('#form_model_upload').submit(function (e) { var isvalid = true; var val = $('#model').val(); if (!val || val == "") { $('#err_model').html('please select an image');
$(document).ready(function () {
$('#form_model_upload').submit(function (e) {
var isvalid = true;
var val = $('#model').val();
if (!val || val == "") {
$('#err_model').html('please select an image');
isvalid = false;
} else {
var ext = $('#model').val().split('.').pop().toLowerCase();
if ($.inArray(ext, ['gif', 'jpg', 'jpeg']) == -1) {
$('#err_model').html('invalid file extension').show();
isvalid = false;
}
}
return isvalid;
});
});
这是我的html代码
<form action="<?php echo $editFormAction; ?>" method="POST" name="form_model_upload">
<input type="hidden" name="vendor_id" value="<?php echo $_SESSION['vendor_id']?>" /><tr><td></td><td><span id="err_model"></span></td></tr>
<tr><td>Model:</td><td><input type="file" name="model" id="model"/></td>
</tr>
<tr><td>Description:</td><td><textarea rows="5" cols="30" name="description" id="description" ></textarea></td></tr>
<tr><td>Category:</td><td><select name="category_model" id="category_model">
<?php $categories=$doc->getElementsByTagName("category");
foreach($categories as $category)
{//$category_node=$category->getElementsByTagName("cat_val");
$category_value=$category->nodeValue;
echo '<option value="'.$category_value.'">'.$category_value.'</option>';
}?>
</select> </td></tr>
<tr><td></td><td><input type="submit" name="upload_submit" id="upload_submit" value="upload" /></td></tr>
<input type="hidden" name="MM_insert" value="upload_model" />
<input type="hidden" name="MM_insert" value="form_model_upload" />
</form>
但即使验证失败,它也会提交表单??
我想防止表单在验证时提交失败。
e.preventDefault()
或返回false代码>位于isvalid=false的位置代码>或在此之后返回有效代码>。你能给我们举一个错误提交的例子吗?你能发布你的HTML吗?你的代码适合我@Kamran您确定在到达返回值isvalid
行之前没有收到某种JavaScript错误吗?请解释一下行$(@).submit();对不起,我是在咖啡脚本模式。它应该是$(this.submit();它会触发表单提交并再次运行该函数。
$(document).ready(function () {
// move this var outside of submit
var isvalid = false;
$('#form_model_upload').submit(function (e) {
// block submit if false (it will be the first time)
if(!isvalid){ e.preventDefault(); }
// set true state here before the validation test
isvalid = true;
var val = $('#model').val();
if (!val || val == "") {
$('#err_model').html('please select an image');
isvalid = false;
} else {
var ext = $('#model').val().split('.').pop().toLowerCase();
if ($.inArray(ext, ['gif', 'jpg', 'jpeg']) == -1) {
$('#err_model').html('invalid file extension').show();
isvalid = false;
}
}
// if form is valid, submit form
// isvalid is now true so e.preventDefault() wont fire
if(isvalid){
$(this).submit();
}
});
});