【发布时间】:2020-02-19 08:53:39
【问题描述】:
我有以下应该隐藏的 div。
<div class="alert alert-danger alert-dismissible" style="display: none;" id="alertDiv"> <strong>Note!</strong><p>At the moment we cannot accept any players born 05 or earlier beacuse we currently are too many.</p></div>
当用户在文本字段“membership-form-personnumber”中输入数值时,我想用 jquery 检查该值,如果满足函数中的条件,则显示上面的 div,但它不起作用。例如,即使我输入 2007,也不会显示 div。我做错了什么?
$('#membership-form-personumber').on('keyup change', function(c) {
//initially hide all
if(this.value.length < 4){
$('#alertDiv').hide();
}
else{
switch(parseInt(this.value)){
case 2019: case 2018: case 2017: case 2016: case 2015: $('#alertDiv').show(); break;
case 2014: case 2013: case 2012: case 2011: case 2010: $('#alertDiv').show(); break;
case 2009: case 2008: case 2007: $('#alertDiv').show(); break;
}
}
});
【问题讨论】:
-
用户 $( "#membership-form-personumber" ).keyup(function() { 而不是 '$('#membership-form-personumber').on('keyup change', function (c) {'
-
@RaviKumar keyup 和更改是必需的。它们相似,但不同。
keyup仅不会捕获浏览器自动填充。change只有在文本框失去焦点时才会触发。 -
你的例子对我来说很好。请参阅此jsfiddle.net/L8wrnakm 尝试分解此问题,以便您可以对其进行故障排除。首先,使用调试器查看 2007 年的案例是否最终调用
$('#alertDiv.show()。如果是这样,那么您的事件处理程序正在正常工作,并且其他东西正在覆盖警报的显示。可能是其他 CSS。您可以使用 chrome 检查器查看覆盖它的样式。 -
一旦您擅长分解问题以进行故障排除,您可能最终将不再需要在 Stackoverflow 上提问。
-
如果我改成 $("#membership-form-personumber").keyup(function(){ 什么都没有发生...
标签: jquery conditional-statements