IE8 và JQuery's trim ()


103

Tôi đang sử dụng trim () như vậy:

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

Đâu group_fieldlà phần tử đầu vào của kiểu văn bản. Điều này hoạt động trong Firefox nhưng khi tôi thử nó trên IE8, nó cho tôi lỗi này:

Message: Object doesn't support this property or method

Khi tôi loại bỏ trim (), nó hoạt động tốt trên IE8. Tôi nghĩ rằng cách tôi đang sử dụng trim () là đúng?

Cảm ơn tất cả sự giúp đỡ

Câu trả lời:


199

Hãy thử cái này thay thế:

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

Thêm thông tin:


1
Cảm ơn, tôi nghĩ rằng các chức năng của JQuery có thể hoạt động theo chuỗi và đó là cách tất cả chúng hoạt động!
Abs

38
@Abs: val()không trả về một đối tượng jQuery, do đó, chuỗi nằm ngoài tùy chọn. Bạn đang gọi trim()phương thức trên một chuỗi, nhưng IE không biết về nó String.trim.
janmoesen

FWIW, tôi vừa thất bại trong phần Đánh giá mã của ai đó vì họ sử dụng cú pháp của OP. Rõ ràng là họ đã không thử nghiệm trong bất kỳ phiên bản nào của MSIE.
Adrian J. Moreno

3
Một lưu ý nhỏ, nếu bạn đang thử nghiệm MSIE8, nó không biết về Array.indexOf (). Sử dụng jQuery.inArray () để thay thế.
Stone


10

Một tùy chọn khác sẽ là xác định phương thức trực tiếp Stringtrong trường hợp nó bị thiếu:

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, ''); 
  }
}

Sau đó, trimsẽ hoạt động bất kể trình duyệt:

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

10

Theo như tôi biết, Javascript String không có phương thức trim. Nếu bạn muốn sử dụng hàm trim, thì hãy sử dụng

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

3

Để cắt toàn cục đầu vào với loại văn bản bằng 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()));
});
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.