检查 jquery 的多个输入的值是不是为空的更短方法

Posted

技术标签:

【中文标题】检查 jquery 的多个输入的值是不是为空的更短方法【英文标题】:Shorter way to check that value of multiple input is empty for jquery检查 jquery 的多个输入的值是否为空的更短方法 【发布时间】:2019-05-03 13:12:51 【问题描述】:
let a = $('#plustitle').val().trim();  // input type text
let b = $('#plustags').val().trim(); // input type text
let c = $('#plustory').val().trim(); // textarea

我需要检查以上变量是否为空,即是否有值“”;

使用 jquery each 循环 - 代码很多。

有没有办法以更短的方式做到这一点。

【问题讨论】:

抱歉,你让我对自己的逻辑感到不安全,但这是正确的^^ !a || !b!(a && b) 相同,因此 if(!(a && b && c)) @Andreas,我明白了,请给出答案,我认为没有更短的方法 【参考方案1】:

如果我们使用空字符串为falsy这一事实,我们可以满足您的要求

if (!(a && b && c)) 
  // one of them is empty
 

【讨论】:

【参考方案2】:

考虑到正在使用“let”,我假设你有 ES6 支持。 将这些值推送到数组后,您可以使用以下代码:

   let a = $('#plustitle').val().trim();  // input type text
   let b = $('#plustags').val().trim(); // input type text
   let c = $('#plustory').val().trim(); // textarea 
   let someValues = [a, b, c]; // if separate variables are not required, directly push to array   
   someValues.forEach(x => if(!x) 
       //do operation when empty
   );

【讨论】:

if ([a, b, c].some(x => !x)) ... OP 不想像提到的那样使用循环【参考方案3】:

加入所有变量并检查结果的长度

let a = $('#plustitle').val().trim();
let b = $('#plustags').val().trim();
let c = $('#plustory').val().trim(); 

if ((a+b+c).length == 0)
  console.log("empty");
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" id="plustitle" value="">
<input type="text" id="plustags" value="">
<input type="text" id="plustory" value="">

您还可以简化代码并使用一个选择器

var values = $('#plustitle, #plustags, #plustory').map(
  (i, ele) => ele.value.trim()
).toArray().join('');

if (values.length == 0)
  console.log("empty");

var values = $('#plustitle, #plustags, #plustory').map(
  (i, ele) => ele.value.trim()
).toArray().join('');

if (values.length == 0)
  console.log("empty");
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="text" id="plustitle" value="">
<input type="text" id="plustags" value="">
<input type="text" id="plustory" value="">

【讨论】:

“您也可以简化代码” - 仅当 puerto 不需要这些值时。否则你将不得不从 DOM 中获取它们两次【参考方案4】:

您可以通过以下方式对其进行抽象:

function isEmpty(id) 
  return ($('#' + id).val().trim() == '');


if(!isEmpty('plusTitle') && !isEmpty('plustags') && !isEmpty('plustory')) 
  console.log('none is empty');

【讨论】:

不使用比较运算符

以上是关于检查 jquery 的多个输入的值是不是为空的更短方法的主要内容,如果未能解决你的问题,请参考以下文章

如何检查Lua中的值是不是为空?

缩短检查多个变量是不是为空的方式

检查所有输入是不是为空

PHP中判断变量值是不是为空的问题

检查输入值是不是为空并显示警报

如何在jquery中检查输入类型号是不是为空[重复]