Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 表单验证中的更改事件_Jquery_Ruby On Rails_Ruby_Forms_Validation - Fatal编程技术网

Jquery 表单验证中的更改事件

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

我正在编写以下jQuery表单验证脚本

我希望在单击submit按钮之前验证是否填充了某些输入字段。我的validateFileInput函数中的第二个条件似乎有问题

/* 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 );
 }