检查对象的空白值并显示错误

Posted

技术标签:

【中文标题】检查对象的空白值并显示错误【英文标题】:checking object for blank values and show errors 【发布时间】:2021-01-10 01:12:44 【问题描述】:

我试图弄清楚如何检查对象中的任何值是否为空白,然后显示相应的错误。

表单输入如下所示:

<form role="form" action="home.php" class="addLaneForm" id="addLaneForm" name="addLaneForm">
  <label for="addlanepartnercode">Partner Code</label><span id="addlanepartnercodeError" class="text-danger laneError" style="display:none;"> * </span>
  <input type="text" class="form-control validation" id="addlanepartnercode" placeholder="Enter Partner Code" />

  <label for="addlanepartnername">Partner Name</label><span id="addlanepartnernameError" class="text-danger laneError" style="display:none;"> *  </span>
  <input type="text" class="form-control validation" id="addlanepartnername" placeholder="Enter Partner Name" />

  <label for="addlaneipicy">IPI/CY</label><span id="addlaneipicyError" class="text-danger laneError" style="display:none;"> * </span>
  <select class="form-control validation" id="addlaneipicy">
     <option></option>
     <option value="YES">YES</option>
     <option value="NO">NO</option>
   </select>

   // few more inputs and selects

  <button type="button" class="btn btn-default btn-flat addLaneSubmit" id="addLaneSubmit" name="addLaneSubmit">Add</button>
</form>

这是 onClick 事件:

$('#addLaneSubmit').on('click', function(e)
  e.preventDefault();

  let partnerCode = $('#addlanepartnercode').val();
  let partnerName = $('#addlanepartnername').val();
  let ipiCy = $('#addlaneipicy').val();

  let addlane = new ProcessLane();

  let addlanecriteria = 
    partnerCode: partnerCode,
    partnerName: partnerName,
    ipiCy: ipiCy
  

  // how I typically would check the values below:

  if(addlanecriteria.partnerCode == "")
    $('#addlanepartnercodeError').show();
    return false;
  
  if(addlanecriteria.partnerName == "")
    $('#addlanepartnernameError').show();
    return false;
  
  else
    addlane.addLaneProcessing(addlanecriteria);
  
);

我通常检查值的方式是多余且耗时的。

我确实在输入中添加了一个名为“laneError”的类。我试图通过调用一个函数来使用它来显示错误,如下所示:

function showAllErrors()
  if($(".addLaneForm .validation") == "")
    $('.laneError').show();
  

首先,我不确定可以将函数调用放在哪里。

但是当我能够调用该函数时,我只能显示第一个错误,即“addlanepartnercodeError”。

必须有一种更简单的方法来检查对象中的值。

【问题讨论】:

【参考方案1】:

你可以有一个像下面这样的可重用函数:

showErrorMsg(elemId) 
  if($.trim($('#' + elemid).val()) === '') 
    $('#' + elemId + 'Error').show()
    return true;
  
  return false;

所以你的代码就是:-

$('#addLaneSubmit').on('click', function(e)
  e.preventDefault();
  let Error = false,
  addlane = new ProcessLane();

  $('form')
    .find("input[id^='add']")
    .each((i , e)
      if(!Error) 
        Error = showErrorMsg($(e).attr('id')) 
      
   )

   if(!Error) 
     // Your form has no errors , do your thing here
     addlane.addLaneProcessing(addlanecriteria);
   
);

【讨论】:

我收到指向此部分的错误:'#add']' @JohnBeasley 随便输入的,现在就测试一下,基本上,应该是 "input[id^='add']" ,双引号,没有 # 并且每个循环都应该有 (i , e) 通过 错误:elemid 未定义 @JohnBeasley 真的不应该这样,你能把你使用的 JS 和演示 html 代码贴在这里jsfiddle.net,保存然后粘贴下面生成的链接 @JohnBeasley 我的错,在elemid之前应该有一个#

以上是关于检查对象的空白值并显示错误的主要内容,如果未能解决你的问题,请参考以下文章

excel使用sumif求和后空白

我们是不是应该手动检查 mysqli_connect() 错误?

VBA 缺少 Worksheet.Range 作为值并不断获取未设置对象变量(错误 91)

检查尺寸值及其含义的功能

zencart 前台或者后台访问空白的排查方法

无错误的空白空白Sankey图