簡體   English   中英

減少多個if else語句

[英]Reduce multiple if else statements

My Name:<input class="clr" id="name" type="text" /><span class="clr" id="name_error">Name is required</span> <br /><br />

My Email Adress:<input class="clr" id="email" type="text" /><span class="clr" id="email_error">Email is required</span> <br /><br />

My Organisation Name:<input class="clr" id="organisation" type="text" /><span class="clr" id="org_error">Organisation is required</span> <br /><br />

我有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的答案可能更簡單和適合

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM