隐藏元素如果另一个元素包含字母,则显示否则

时间:2014-05-19 20:35:51

标签: javascript jquery regex hide show

我遇到了一些javascript的问题,我写了一个正则表达式来测试字母的元素id,如果它有字母,它会隐藏另一个元素id。这项工作,我遇到的问题是它显示了当id确实为空时它隐藏的元素。但是,问题是,使用令牌填充此id。你可以看到下面的代码,它只是稍微草率,因为我刚刚添加临时ID,试图让它工作。

<script type="text/javascript">
$(document).ready(function(){  
      var regex = /^[A-Za-z]+$/;
      if (!regex.test($("#signinwelcome").val()))
      {$("#signinlink").hide();}

      else{$("#signinlink").show();}

      });
</script>

<div id="headerwelcome"><div id="signinlink"><a href="default.aspx?Page=Logon" >SIGN IN / LOG OUT</a></div>
            WELCOME <a href="Default.aspx?Page=My Account Profile"><div id="signinwelcome" style="display: inline;">@@FirstName</div></a>!</div>

所以在网页上如果你没有登录@@ FirstName是空白的,没有显示,它只是空的。当您登录时,#signinwelcome将填充您的姓名,然后应隐藏登录/注销,当您注销时,应重新出现SIGN / LOG OUT。这不是它仍然隐藏的情况。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

$("#signinwelcome").text()将返回div元素内的文本。 .val()用于表单元素,例如文本,广播,复选框等。


另外,请查看toggle方法。它需要一个参数来切换开关和切换关闭。您的代码可以重写为:

$(document).ready(function(){  
  var regex = /^[A-Za-z]+$/;
  var is_signed_in = regex.test($("#signinwelcome").text());
  $("#signinlink").toggle(is_signed_in);
});