IE8 और JQuery के ट्रिम ()


103

मैं ट्रिम का उपयोग कर रहा हूं () जैसे:

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

जहां group_fieldटाइप टेक्स्ट का इनपुट एलिमेंट है। यह फ़ायरफ़ॉक्स में काम करता है लेकिन जब मैं IE8 पर इसे आज़माता हूँ तो यह मुझे यह त्रुटि देता है:

Message: Object doesn't support this property or method

जब मैं ट्रिम () को हटाता हूं, तो यह IE8 पर ठीक काम करता है। मुझे लगा कि जिस तरह से मैं ट्रिम () का उपयोग कर रहा हूं वह सही है?

किसी भी मदद के लिए धन्यवाद

जवाबों:


199

इसके बजाय यह प्रयास करें:

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

और जानकारी:


1
धन्यवाद, मैंने सोचा कि JQuery के कार्य श्रृंखला-सक्षम थे और यही है कि वे सभी कैसे काम करते हैं!
Abs

38
@ एब्स: val()एक jQuery ऑब्जेक्ट वापस नहीं करता है, इसलिए चेनिंग विकल्प से बाहर है। आप trim()एक स्ट्रिंग पर विधि को बुला रहे थे , लेकिन IE के बारे में पता नहीं है String.trim
जंमोसन

एफडब्ल्यूआईडब्ल्यू, मैं सिर्फ किसी के कोड की समीक्षा में विफल रहा क्योंकि उन्होंने ओपी के सिंटैक्स का उपयोग किया था। उन्होंने स्पष्ट रूप से MSIE के किसी भी संस्करण में परीक्षण नहीं किया।
एड्रियन जे। मोरेनो

3
एक तरफ ध्यान दें, यदि आप MSIE8 का परीक्षण कर रहे हैं, तो यह Array.indexOf () के बारे में नहीं जानता है। इसके बजाय jQuery.inArray () का उपयोग करें।
पत्थर


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

जहाँ तक मुझे पता है, जावास्क्रिप्ट स्ट्रींग में विधि ट्रिम नहीं है। यदि आप फ़ंक्शन ट्रिम का उपयोग करना चाहते हैं, तो उपयोग करें

<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()));
});
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.