2015-05-12 66 views
7

我有一个jQuery包含的问题。它在Firefox上完美工作。jQuery包含在Chrome上不起作用

这是我的代码。

$("input[data-height='cm']").blur(function(){ 
    var text = $(this).val(); 

    if($(this).val().length > 0) { 
     if(!$(this).val().contains("cm")) { 
      $(this).val(text + " cm"); 
     } 
    } 
}); 

对铬它给错误

Uncaught TypeError: $(...).val(...).contains is not a function

我怎样才能解决这个问题,请帮助。

谢谢。

+0

该功能不起作用。你可能想用'indexOf','match'或'test'。 – putvande

+1

您正试图在JavaScript字符串上使用'jquery contains'方法。 –

+0

包含的方法是jquery插件,或者你可以用jQuery中的dom元素选择器调用,你不能在字符串上调用它。 为此你必须使用indexOf。 – syms

回答

8

使用indexOf代替contains

if($(this).val().indexOf("cm") == -1) { 
    $(this).val(text + " cm"); 
} 
+0

供您参考.. https://api.jquery.com/jQuery.contains/ –

+0

$ .contains可用作选择器。 – captainsac

+0

谢谢你的回答 –

3

你可以使用test

if(!/cm/.test($(this).val())) { 
    $(this).val(text + " cm"); 
} 
2

有没有这样的方法,在Chrome contains。相反,你应该更好地利用indexOf

// Instead of... 
if ($(this).val().contains('cm')) { /* val() contains 'cm' */ } 
// ...do this: 
if ($(this).val().indexOf != -1) { /* val() contains 'cm' */ } 

请注意,indexOf返回-1如果发生难度不是在字符串中发现和> = 0,如果发生难度找到。

3

.contains()检查,看是否有DOM元素是另一个DOM元素的后代,因此,你应该用jQuery对象使用它:

在这里,您可以使用indexOf()函数来检查值属性的内容。

if($(this).val().indexOf("cm")>=0) { 

} 

您可以参考.contains()了解更多信息。