2014-08-29 77 views
0

我有一个HTML div(f),其中有input s,我希望它是当输入被点击时,它会更改为我指定的bad_input类(背景颜色是红色的)。但是,这不起作用,我不确定如何解决它。输入有placeholder标签,但是,我相信这不是它不工作的原因。jQuery迭代输入不工作

$("#f input").blur(function() 
    { 
    if (!$(this).val()) 
     { 
     $(this).attr('class', 'bad_input'); 
     } 
    }); 
+2

你的代码适用于我:http://jsfiddle.net/barmar/rqxcpmr6/ – Barmar 2014-08-29 10:52:13

+0

你把你的代码放在'$(document).ready()'处理程序中了吗?你是否动态添加输入?如果是这样,你需要使用事件委托。 – Barmar 2014-08-29 10:52:50

+0

如果输入字段为空,字体颜色将不会执行任何操作。尝试使用背景颜色,就像我的小提琴一样。 – Barmar 2014-08-29 10:54:24

回答

0

用户.addClass() jQuery的方法来添加的类别,不attr()

你在做什么会在输入添加属性与class = "bad_input"

 $("#f input").blur(function() 
      { 
      if (!$(this).val()) 
       { 
        $(this).addClass('bad_input'); 
       } 
      }); 
0
$("#f input").blur(function(){ 
    if (!$(this).val()){ 
     $(this).addClass('bad_input').focus(); 
    } 
}); 
0
$("#f input").blur(function() 
    { 
    if ($(this).val()=="") 
     { 
     $(this).addClass('bad_input'); 
     } 
    }); 
0

我可以实际上你的代码没有看到任何问题。我创建了一个jsfiddle,它显示它正在工作并稍微调整了jQuery,与其他人的方式类似。

$(document).ready(function() { 
    $("#f input").on("blur", function() { 
     if (!$(this).val()) { 
      $(this).addClass("bad_input"); 
     } else { 
      $(this).removeClass("bad_input"); 
     } 
    }); 
}); 

你是通过Ajax或类似的东西动态加载元素吗?当使用$(“el”)。blur时,事件被绑定到文档上,因此如果包含元素的标记在文档准备好后被注入,事件将不会被绑定。使用$(“el”)。on(“blur”)可以帮助解决这个问题。

此外,请尝试向您的代码添加警报以确保事件正确触发。

0

我固定它...

的投入已经是在一个CSS文件中定义的类("#f input"),并修复它,我不得不添加!important标签在我的CSS文件'bad_input'