如果此输入具有值,则在IE 9中不起作用

时间:2014-05-13 01:03:01

标签: javascript jquery internet-explorer

我正在使用这个简单的代码来过滤包含许多文本输入的搜索表单,看看它们是否有值,然后添加一个类。 适用于Chrome,Safari和Firefox,但不适用于IE9。

$('input[type="text"]').filter(function() {
  if ($(this).val() !== '') {
    $(this).addClass('used');
  }
});

请提前建议,谢谢!

修改 改变每一个但没有解决问题......这就是触发功能的事件......

   $(document).on('event-ajax-form-is-loaded', function() {
      $('input[type="text"]').each(function() {
        if ($(this).val() !== '') {
            $(this).addClass('used');
        }
      });
   });

2 个答案:

答案 0 :(得分:1)

根据您分享的有限信息,您应该这样做:

$('input[type="text"]').filter(function() {
    return $(this).val() !== '';
}).addClass('used');

.filter()应该减少一组匹配的元素,因此它的过滤函数应该总是返回一个bool,而不是操纵DOM。

编辑:根据您更新的代码段和您在评论中分享的页面链接,如果您在WordPress中使用jQuery,那么它总是更安全地包装代码如下:

(function($) {
    /* jQuery Code using $ object */
})(jQuery);

答案 1 :(得分:0)

enter code hereJS中,您可以通过获取其标记名称来检查元素值

for (var i = 0; i < document.getElementsByTagName('input').length; i++){
    if (document.getElementsByTagName('input')[i].value == "")
    {
        alert("The value of textbox at " + i + " is empty");
    }
}

Working Demo

或者像其他人的建议一样,在.each

中使用JQuery
$('input[type="text"]').each(function(i){

if ($(this).val() == "") {
    alert("The value of textbox at " + i + " is empty");
  }

});

anohter Working Demo

如果您坚持使用filter,请转到此处

$('input[type="text"]').filter(function() 
     {  return $( this ).val() != "";  }).addClass("used");

Last Working Demo

jquery filter reference