减少多个if else语句

My Name:Name is required 

My Email Adress:Email is required

My Organisation Name:Organisation is required

我有3个输入字段。 我在提交空字段时使用span来显示错误消息。

我的问题是,如果name字段为空,我们应该得到"Name is required"错误,如果email字段为空,我们应该收到"email is required"错误等等。

为此,我写下面的代码。

 if (name == "") $("#name_error").show(); else $("#name_error").hide(); if (email == "") $("#email_error").show(); else $("#email_error").hide(); if (organisation == "") $("#org_error").show(); else $("#org_error").hide(); 

有没有办法减少if / else语句?

有效地使用jQuery,你可以这样做。

 $('input.clr').each(function(){ if ($(this).val() == "") $(this).next('span.clr').show(); }); 

在此之前,我们需要以这种方式隐藏它们:

 $('span.clr').hide(); 

你可以这样做:

  var obj = window; // or something else, depending on your scope ['name', 'email', 'organisation'].forEach(function(v) { var $e = $('#'+v+'_error'); if (obj[v]=="") $e.show(); else $e.hide(); }); 

注意

  • 这意味着更严格一点,用“组织”取代“组织”
  • 我试图模仿你的代码但是在根处改变(即你填充像name这样的变量的地方)将允许更简单的代码
  • 如果您知道DOM没有改变且误差范围始终跟随输入,那么Praveen的答案可能更简单和适合