Jquery 表单验证中的更改事件
我正在编写以下jQuery表单验证脚本 我希望在单击submit按钮之前验证是否填充了某些输入字段。我的validateFileInput函数中的第二个条件似乎有问题Jquery 表单验证中的更改事件,jquery,ruby-on-rails,ruby,forms,validation,Jquery,Ruby On Rails,Ruby,Forms,Validation,我正在编写以下jQuery表单验证脚本 我希望在单击submit按钮之前验证是否填充了某些输入字段。我的validateFileInput函数中的第二个条件似乎有问题 /* Validate File Size */ var validateFileInput = function() { if ($('#fileField')[0].files.length > 0 || $('#defImage').val().length > 0 ) { return true
/* Validate File Size */
var validateFileInput = function() {
if ($('#fileField')[0].files.length > 0 || $('#defImage').val().length > 0 ) {
return true;
}
}
var validate = function(){
if ($('#campaign_name').val().length > 0 &&
$('#headline_area').val().length > 0 &&
$('#description_area').val().length > 0 &&
validateFileInput() ) {
$("input[type=submit]").prop("disabled", false);
}
else {
$("input[type=submit]").prop("disabled", true);
}
}
$(document).ready(function () {
validate();
$('#new_campaign').on( 'change', ':input', function (e){
e.preventDefault();
validate();
console.log('I just validated');
});
});
因此,这一行似乎是问题所在,因为当满足条件时,提交按钮仍然不可点击:
$('#defImage').val().length > 0
如果我在添加一个文件后在控制台中运行它,它会输出为true,所以我不确定为什么这不起作用
编辑
第二个文件字段的html如下所示:
<a data-remote="true" data-target=".our-images" data-toggle="modal" href="/default_images" id="image-default-button">Use one of ours</a>
<input id="defImage" name="campaign[default_image_id]" type="hidden" />
我使用Ajax请求获取图像,然后将图像的id传递给隐藏字段#defImage,该字段将为我提供
<input id="defImage" name="campaign[default_image_id]" type="hidden" value="3" />
我用验证处理这个错误吗
我已经创建了一个,但是当输入类型设置为file时,所有这些都可以工作。如果有文件,则函数返回
true
,但当条件为false
时,函数返回未定义的,因此失败
试着改变你的想法
var validateFileInput = function() {
if ($('#fileField')[0].files.length > 0 || $('#defImage').val().length > 0 ) {
return true;
}
}
致:
你能修改一下你的代码吗谢谢你的回答,我已经改变了你所说的,但还是一样的行为你能把你的HTML表格添加到你的问题中吗?或者像@sarath说的,把每件事都放在一把小提琴里。问题更新了,希望信息能让事情变得更清楚。你能删除你的回答吗?我再次问了这个问题,但这次以更清晰的方式解决这个问题,谢谢
var validateFileInput = function() {
return ($('#fileField')[0].files.length > 0 || $('#defImage').val().length > 0 );
}