2015-05-12 19 views
7

Mam jeden problem z zawartością jquery. Działa idealnie na firefox.jQuery zawiera nie działa w Chrome

To jest mój kod.

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

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

na chromie dać error

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

Jak mogę naprawić to proszę o pomoc.

Dziękuję.

+0

Te funkcje nie działają w ten sposób. Prawdopodobnie chcesz użyć czegoś takiego jak 'indexOf',' match' lub 'test'. – putvande

+1

Próbujesz użyć metody 'jQuery zawiera' na' ciąg znaków JavaScript'. –

+0

zawiera metodę z wtyczki jquery lub możesz zadzwonić z selektorem elementu dom w jquery, nie możesz tego wywołać na łańcuchu. do tego trzeba użyć indexOf. – syms

Odpowiedz

8

Zastosowanie indexOf zamiast contains

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

Dla twojego odniesienia .. https://api.jquery.com/jQuery.contains/ –

+0

Ten $ .contains działa jako selektor. – captainsac

+0

Dziękujemy za odpowiedź –

3

można użyć test:

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

Nie ma takiej metody jak contains w Chrome. Zamiast tego, należy lepiej wykorzystać indexOf:

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

Uwaga indexOf zwraca -1 jeżeli wystąpienie nie zostanie znaleziony w ciągu i> = 0, jeśli wystąpienie zostanie znaleziony.

3

.contains() sprawdza czy element DOM jest potomkiem innego elementu DOM dlatego należy używać go z jQuery obiektów:

Tutaj można używać indexOf() funkcję sprawdzić zawartość atrybutu value.

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

} 

Aby uzyskać więcej informacji, można przejść pod numer .contains().