Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.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
Javascript jQuery-检查输入、文本区域的值是否为空,并在同一函数中选择not blank_Javascript_Jquery_Html_Validation_If Statement - Fatal编程技术网

Javascript jQuery-检查输入、文本区域的值是否为空,并在同一函数中选择not blank

Javascript jQuery-检查输入、文本区域的值是否为空,并在同一函数中选择not blank,javascript,jquery,html,validation,if-statement,Javascript,Jquery,Html,Validation,If Statement,我有下面的代码,它检查输入、文本区域和选择的值是否为空,但我没有为每个值创建函数,而是尝试使用数组将它们全部存储到一个变量中 但是,当单击处理程序被激活时,即使页面上的所有输入都已填写,也会出现错误消息 有人知道这是什么原因吗 HTML: 试试下面的 $('#saveInvoice').click(function(e) { e.preventDefault(); var $fields = [ $('input'), $('textarea'), $('select') ]; va

我有下面的代码,它检查输入、文本区域和选择的值是否为空,但我没有为每个值创建函数,而是尝试使用数组将它们全部存储到一个变量中

但是,当单击处理程序被激活时,即使页面上的所有输入都已填写,也会出现错误消息

有人知道这是什么原因吗

HTML:

试试下面的

$('#saveInvoice').click(function(e) {
  e.preventDefault();
  var $fields = [ $('input'), $('textarea'), $('select') ];
  var $emptyFields = $fields.filter(function(element) {
    return $.trim(element.val()) === "";
  });
  if (!$emptyFields.length) {
    saveInvoice();
  } else {
    alert('Unable to save invoice. There are incomplete item fields.');
  }
});

您应该获取数组元素的值

将this.value替换为this.val()您有两个问题

第一:Jquery选择器。您已经获取了元素数组$('input')提供所有输入的节点列表。您需要指定要访问值的输入的索引。例如,$(“input”)[0]为您提供在页面上找到的第一个输入

第二:您需要将项传递给过滤器回调函数。此过滤器的内部回调引用窗口

$(“#保存发票”)。单击(函数(e){
e、 预防默认值();
变量$fields=[$('input')[0],$('textarea')[0],$('select')[0]];
var$emptyFields=$fields.filter(函数(ele){
控制台日志(元素值);
返回$.trim(元素值)=“”;
});
如果(!$emptyFields.length){
//保存发票();
}否则{
警报('无法保存发票。存在不完整的项目字段');
}
});

输入:
文本区域:
选择:A 拯救
这种方法很有效,但出于某些原因,它忽略了空白文本区域,原因不明。对我来说很好。。你有多个文本区吗?是的,页面上有两个文本区。您提到,我已经编辑了选择器,只获取主窗体中textarea的值,然后我刚刚为该窗体之外的页面上的textarea添加了另一个函数
$('#saveInvoice').click(function(e) {
  e.preventDefault();
  var $fields = [ $('input'), $('textarea'), $('select') ];
  var $emptyFields = $fields.filter(function(element) {
    return $.trim(element.val()) === "";
  });
  if (!$emptyFields.length) {
    saveInvoice();
  } else {
    alert('Unable to save invoice. There are incomplete item fields.');
  }
});