IE8과 JQuery의 trim ()


103

다음과 같이 trim ()을 사용하고 있습니다.

if($('#group_field').val().trim()!=''){

group_field텍스트 유형의 입력 요소는 어디에 있습니까 ? 이것은 Firefox에서 작동하지만 IE8에서 시도하면 다음 오류가 발생합니다.

Message: Object doesn't support this property or method

trim ()을 제거하면 IE8에서 잘 작동합니다. trim () 사용하는 방식이 맞다고 생각 했습니까?

도움을 주셔서 감사합니다.

답변:


199

대신 이것을 시도하십시오.

if($.trim($('#group_field').val()) != ''){

더 많은 정보:


1
감사합니다. 저는 JQuery의 기능이 체인 가능하다고 생각했고 그것이 모두 작동하는 방식이었습니다!
Abs

38
@Abs : val()jQuery 객체를 반환하지 않으므로 체인은 옵션에서 제외됩니다. trim()문자열 에서 메서드를 호출 했지만 IE는 String.trim.
janmoesen 2010 년

FWIW, OP의 구문을 사용했기 때문에 누군가의 코드 검토에 실패했습니다. 그들은 분명히 MSIE의 어떤 버전에서도 테스트하지 않았습니다.
Adrian J. Moreno

3
참고로 MSIE8을 테스트하는 경우 Array.indexOf ()에 대해 알지 못합니다. 대신 jQuery.inArray ()를 사용하십시오.
Stone


10

또 다른 옵션은 String누락 된 경우 직접 메서드를 정의하는 것입니다 .

if(typeof String.prototype.trim !== 'function') {
  String.prototype.trim = function() {
    //Your implementation here. Might be worth looking at perf comparison at
    //http://blog.stevenlevithan.com/archives/faster-trim-javascript
    //
    //The most common one is perhaps this:
    return this.replace(/^\s+|\s+$/g, ''); 
  }
}

그런 다음 trim브라우저에 관계없이 작동합니다.

var result = "   trim me  ".trim();

10

내가 아는 한 Javascript String에는 트림 메소드가 없습니다. 기능 트림을 사용하려면

<script>
    $.trim(string);
</script>

3

jQuery를 사용하여 텍스트 유형으로 입력을 전역 적으로 트림하려면 :

/**
 * Trim the site input[type=text] fields globally by removing any whitespace from the
 * beginning and end of a string on input .blur()
 */
$('input[type=text]').blur(function(){
    $(this).val($.trim($(this).val()));
});
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.