类型错误:无法读取 empty_value_check 的未定义属性长度

时间:2021-04-22 15:20:57

标签: javascript html jquery django

这些是我的 html 表单的 javascript 函数,分别用于验证“input”元素和“select”元素中的空值。 empty_select_check 函数不起作用,我不确定为什么,但 empty_value 检查适用于各个字段。但是,它在 empty_value_all() 函数中不起作用。请注意,当用户单击提交时会调用 empty_value_all()。 我收到以下错误:

类型错误:无法读取 empty_value_check 的未定义属性长度。知道为什么它适用于单个字段而不适用于我尝试提交时吗?让我知道您是否需要我的 html 代码,但基本上它只是带有 onkeyup="" 的输入元素,我在其中调用了 js 函数。

  function submitform(){
      empty_value_all()
      $('#Start').click()
    }
  }


function empty_value_check(ele) {
  let value = ele.value;
  console.log(value)
  if (value === '' || value.length === 0) {
    if ($(ele).closest('div').find('small').length != 0)
      $(ele).closest('div').find('small').removeClass('hide').removeClass('d-none');
    else
      $(ele).closest('div').nextAll('small').removeClass('hide').removeClass('d-none');
      $(ele).addClass('is-invalid');
  }
  else {
    $(ele).nextAll('small').addClass('hide');
    $(ele).removeClass('is-invalid');
  }
}


function empty_select_check(ele) {
  if (ele.value === "Select Folder" || ele.value === undefined) {
      $(ele).addClass('invalid-feedback');
  return false
    } else {
      $(ele).removeClass('is-invalid');
    }
}


$(function() {
  $('#field_5,#field_6,#field_7').on('change', empty_select_check(this))
})

function empty_value_all() {
  $('#field_1,#field_2,#field_3,#field_4').each(empty_value_check(this));
  $('#field_5,#field_6,#field_7').each(empty_select_check(this));
  return false;
}


1 个答案:

答案 0 :(得分:0)

$(selector).each(looping_function) 需要一个函数作为输入,但在有问题的代码中,它是被传递的函数的结果。更新 empty_value_all 如下并尝试,

function empty_value_all() {
    $('#field_1,#field_2,#field_3,#field_4').each(function () {
        empty_value_check(this);
    });
    $('#field_5,#field_6,#field_7').each(function () {
        empty_select_check(this);
    });

    //...

}