.trim () জাভাস্ক্রিপ্টে আইই তে কাজ করছে না


460

আমি .trim()আমার জাভাস্ক্রিপ্ট প্রোগ্রামগুলির একটিতে স্ট্রিংয়ের জন্য প্রয়োগ করার চেষ্টা করেছি। এটি মজিলার অধীনে দুর্দান্ত কাজ করছে, কিন্তু আমি যখন আইই 8 তে চেষ্টা করি তখন একটি ত্রুটি প্রদর্শিত হয়। কেউ কি জানেন যে এখানে কী চলছে? আমি কীভাবে এটি আইই তে কাজ করতে পারি?

কোড:

var ID = document.getElementByID('rep_id').value.trim();

ত্রুটি প্রদর্শন:

বার্তা: বস্তু এই সম্পত্তি বা পদ্ধতি সমর্থন করে না
লাইন: 604
চর: 2
কোড: 0
ইউআরআই: http: //test.localhost/test.js

2
আপনার কম্পিউটারে কী আছে তা আমি দেখতে পাচ্ছি না। আপনি কি স্টোরেজ ওয়েবসাইটে টেস্ট.জেএস আপলোড করতে পারবেন? এছাড়াও, আমাকে কী ভুল তা দেখতে আসল ট্রিম () ফাংশনটি দেখতে হবে। ধন্যবাদ!
ওয়ার্টি

6
@ ইটজওয়ার্টি আইই 8 "whatever ".trim()তে চেষ্টা করুন।
ড্যান রোজনস্টার্ক


8
আমি IE8 এর জন্য সামঞ্জস্যের জন্য গুগলড করেছি trim(), এবং যখন আমি বুঝতে পারি যে এটি অসমর্থিত তখন আমার চোখ বিশ্বাস করবে না। এটি পরিষ্কার করার জন্য ধন্যবাদ। আমি যেমন জিজ্ঞাসা করেছি তেমনই জিজ্ঞাসা করছিলাম।
ম্যাথিয়াস লাইককেগার্ড লরেঞ্জেন

উত্তর:


773

স্ট্রিংয়ের মধ্যে ছাঁটা কার্যকারিতা যুক্ত করতে নিম্নলিখিত কোড যুক্ত করুন।

if(typeof String.prototype.trim !== 'function') {
  String.prototype.trim = function() {
    return this.replace(/^\s+|\s+$/g, ''); 
  }
}

8
ভাল উত্তর. একটি মানদণ্ড অনুসারে ফায়ারফক্স ২ এর replace(/^\s\s*/, '').replace(/\s\s*$/, '')চেয়ে প্রায় তিনগুণ দ্রুত হওয়া উচিত নোট replace(/^\s+|\s+$/, ''): ব্লগ.স্টেভলেভিথান
ড্যানিয়েল

92
এটিও নোট করুন যে replace(/^\s+|\s+$/, '')কেবল নেতৃস্থানীয় বা চলমান স্থানগুলি সরিয়ে ফেলবে, যা ট্রিম ফাংশন থেকে প্রত্যাশিত আচরণ নয়। আপনি যদি উভয় নেতৃস্থানীয় এবং পিছনের স্থান সরাতে চান তবে আপনার ব্যবহারের প্রয়োজন replace(/^\s+|\s+$/g, '')
ম্যাসিমিলিয়ানো ফ্লিরি

1
আমার কাছে কিছুটা নির্বোধ মনে হচ্ছে। প্রতিটি জেএস ফ্রেমওয়ার্ক কোনও ইউটিলিটি ট্রিম () ফাংশন সরবরাহ করে না? এটি যদি আপনার একমাত্র সমস্যা হয় তবে ঠিক আছে, তবে আইআই "আলাদা" এমন প্রচুর উপায় রয়েছে যা স্বল্প সময়ের মধ্যে একটি লাইব্রেরিকে মূল্যবান করে তুলবে।
স্টিফেন

6
@ স্টেফেন হ্যাঁ আপনি সঠিক, তবে প্রশ্ন ফ্রেমওয়ার্ক সম্পর্কে নয়। এটি জাভাস্ক্রিপ্ট এবং ছাঁটাই সম্পর্কে।
বেন রোয়ে

3
আপনি jQuery ব্যবহার না করলে এটি একটি দুর্দান্ত সমাধান। তবে যদি তা না হয় তবে ri .Trim () এটি আরও ভাল সমাধান বলে মনে হচ্ছে, কারণ এটি আপনার স্ক্রিপ্টটিকে কিছুটা সরল রাখে।
এনএলমে

203

দেখে মনে হচ্ছে যে ফাংশনটি আইই তে প্রয়োগ করা হয়নি। আপনি যদি jQuery ব্যবহার করেন তবে আপনি তার $.trim()পরিবর্তে ব্যবহার করতে পারেন ( http://api.jquery.com/jQuery.trim/ )।


17
এখন, আমি jQuery পছন্দ করি, তবে এটিকে কেবল .trim () এর জন্য আমদানি করে ওভারকিল বলে মনে হয়
এরিক

71
আমি রাজী. এ কারণেই আমি বলেছিলাম "যদি আপনি jQuery ব্যবহার করেন ..." =)
jrummell

@ এরিক এটিই কেবল আইই ইস্যু হতে চলেছে জিন যাচ্ছেন? লাইব্রেরির ব্রাউজার স্যানিটাইটিসেশন ফাংশন ব্যবহার না করেই আমি লিখতে পারি এমন অনেক দরকারী জাভাস্ক্রিপ্ট নেই।
স্টিফেন

8
দয়া করে মনে রাখবেন যে $ .trim () $ (<element> .val ()। ট্রিম () থেকে আলাদা - আরও তথ্য এখানে: stackoverflow.com/questions/4315570/…
সামি

57

JQuery:

$.trim( $("#mycomment").val() );

কেউ ব্যবহার করে $("#mycomment").val().trim();তবে এটি IE এ কাজ করবে না।


1
একটি নিখুঁত উত্তরের জন্য আপনাকে ধন্যবাদ যা এই পচা নড়বড়ে পুরানো ব্রাউজার ব্রিজের জন্য আমাদের এখানে অনেক মাথাব্যথা বাঁচিয়েছে :)
আভেরালিস

1
কেন jQuery এর দুর্দান্ত উদাহরণ।
অ্যান্ড্রু প্লামার

এই পদ্ধতি কি ক্রস ব্রাউজার, স্যার?
তোহা

2
@ তোহা, ক্রস ব্রাউজার হওয়া jQuery সম্পর্কিত
রায়েরস্টর্ম

ঠিক আছে স্যার। আমি অনুমান করি. ধন্যবাদ
তোহা

34

দুর্ভাগ্যক্রমে ট্রিম () এর জন্য ক্রস ব্রাউজার জাভাস্ক্রিপ্ট সমর্থন নেই।

আপনি যদি jQuery ব্যবহার করেন না (যার একটি .trim () পদ্ধতি রয়েছে) আপনি স্ট্রিংগুলিতে ট্রিম সমর্থন যুক্ত করতে নিম্নলিখিত পদ্ধতিগুলি ব্যবহার করতে পারেন:

String.prototype.trim = function() {
    return this.replace(/^\s+|\s+$/g,"");
}
String.prototype.ltrim = function() {
    return this.replace(/^\s+/,"");
}
String.prototype.rtrim = function() {
    return this.replace(/\s+$/,"");
}


8

একটি ইনপুট থেকে একটি মান ছাঁটাই করার চেষ্টা করার পরে আমার অনুরূপ সমস্যা হয়েছিল এবং তারপরে জিজ্ঞাসা করুন যে এটি কোনও কিছুর সমান নয়:

if ($(this).val().trim() == "")

যাইহোক এটি আই 6 - 8 এর জন্য কাজগুলিতে একটি স্প্যানার ছুঁড়ে ফেলেছে Ann 8 বিরক্তিকরভাবে যথেষ্ট যে আমি এটির মতো এটির চেষ্টা করার চেষ্টা করেছি:

   var originalValue = $(this).val();

তবে, jQuery এর ট্রিম পদ্ধতি ব্যবহার করে সমস্ত ব্রাউজারে আমার জন্য পুরোপুরি কার্যকর হয় ..

var originalValueTrimmed = $.trim($(this).val());              
            if (originalValueTrimmed  == "") { ... }

5

আমি ট্রিম কার্যকারিতা বাস্তবায়নের জন্য কিছু কোড লিখেছি।

এলটিআরআইএম (ট্রিম বাম):

function ltrim(s)
{
    var l=0;
    while(l < s.length && s[l] == ' ')
    {   l++; }
    return s.substring(l, s.length);
} 

আরটিআরআইএম (ডানদিকে ছাঁটা):

function rtrim(s)
{
    var r=s.length -1;
    while(r > 0 && s[r] == ' ')
    {   r-=1;   }
    return s.substring(0, r+1);
 }

TRIM (উভয় পক্ষের ছাঁটা):

function trim(s)
{
    return rtrim(ltrim(s));
}

অথবা

নিয়মিত এক্সপ্রেশনও পাওয়া যায় যা আমরা ব্যবহার করতে পারি।

function trimStr(str) {
  return str.replace(/^\s+|\s+$/g, '');
}

দরকারী ব্যাখ্যা


3
আপনার পুরানো স্কুল অনুসন্ধান এবং কোড ধ্বংস হ্যান্ডেল নেই \t, \r, \nএবং এই ধরনের। শুধু spaces। আপনি যদি ম্যানুয়ালি সব কিছু পরিচালনা করার প্রচেষ্টা চালিয়ে যাওয়ার মতো মনে করেন না তবে রিজেক্সেপ আরও ভাল।
কোডআঙ্গারি

4

আমরা ইন্টারনেট থেকে অফিসিয়াল কোড পেতে পারি! এটি উল্লেখ করুন:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/trim

অন্য কোনও কোডের আগে নিম্নলিখিত কোডটি চালনা করা যদি স্থানীয়ভাবে উপলভ্য না হয় তবে ট্রিম () তৈরি করবে।

if (!String.prototype.trim) {
  (function() {
    // Make sure we trim BOM and NBSP
    var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;
    String.prototype.trim = function() {
      return this.replace(rtrim, '');
    };
  })();
}

আরও তথ্যের জন্য: আমি সবেমাত্র একমাস্ক্রিপ্ট 5 সমর্থন করার জন্য জেএস প্রকল্প আছে: https://github.com/es-shims/es5- উত্স কোডটি পড়ে শিম , আমরা ট্রিম সম্পর্কে আরও জ্ঞান পেতে পারি।

defineProperties(StringPrototype, {
 // http://blog.stevenlevithan.com/archives/faster-trim-javascript
 // http://perfectionkills.com/whitespace-deviations/
  trim: function trim() {
    if (typeof this === 'undefined' || this === null) {
      throw new TypeError("can't convert " + this + ' to object');
    }
    return String(this).replace(trimBeginRegexp, '').replace(trimEndRegexp, '');
  }
}, hasTrimWhitespaceBug);

3

আমি মনে করি না trim()জাভাস্ক্রিপ্ট স্ট্যান্ডার্ডে একটি নেটিভ পদ্ধতি আছে। মজিলা হয়ত একটি সরবরাহ করে তবে আপনি যদি আইই তে চান তবে আপনার নিজের এটি লিখতে হবে। এই পৃষ্ঠায় কয়েকটি সংস্করণ রয়েছে ।


3

আইই 9 তে আমার একই সমস্যা ছিল তবে আমি যখন প্রথম লাইনে নীচের ট্যাগটি সহ সমর্থিত এইচটিএমএল সংস্করণটি ঘোষণা করি তখন

<!DOCTYPE html>
<HTML>
<HEAD>...
.
.

সমস্যাটি সমাধান করা হয়েছিল।


1

এটি টাইপ ত্রুটির কারণে এলিমেটবাই আইডি হয় । এটিতে এলিমেন্টবাইআইডি-তে পরিবর্তন করুন


0
var res = function(str){
    var ob; var oe;
    for(var i = 0; i < str.length; i++){
        if(str.charAt(i) != " " && ob == undefined){ob = i;}
        if(str.charAt(i) != " "){oe = i;}
    }
    return str.substring(ob,oe+1);
}

1
আপনি যখন সরল প্রতিস্থাপন ব্যবহার করতে পারেন তখন কেন একটি লুপ করবেন, সময়টি ক্রুশযুক্ত হওয়ার সময়ও খুব খারাপ, এই পদ্ধতিটিটি প্রায় 200 মাপের আকারের পাঠ্য এবং jQuery দ্বারা সরবরাহিত অন্যান্য প্রয়োগকে কল করার চেষ্টা করুন এবং আমি কী সম্পর্কে বলছি তা আপনি দেখতে পাবেন: )
ড্যানি খলাইফ

1
কারণ কিছু ক্ষেত্রে একটি লুপ একটি রেজিপেক্সের চেয়ে দ্রুত। কিছু মানদণ্ডের জন্য জেডাব্লু তার উত্তরটিতে পোস্ট করেছে সেই লিঙ্কটি দেখুন, বিশেষত সেখানে মন্তব্যগুলি (যেহেতু মূল মাপদণ্ডটি বেশ পুরানো)।
এরিক

0

সবেমাত্র trim()উইন্ডোজ আপডেটের পরে, IE সমর্থন করা বন্ধ করে দিয়েছে found আপনি যদি ডোজো ব্যবহার করেন তবে আপনি ব্যবহার করতে পারেন dojo.string.trim()এটি ক্রস প্ল্যাটফর্মের কাজ করে।


0

আইআর ইন্ট্রনেট সাইটগুলিতে সামঞ্জস্যতা মোড ব্যবহার করে এই সমস্যাটি ঘটতে পারে। এটি সমাধানের দুটি উপায় রয়েছে, আপনি হয় স্থানীয় স্থানীয় মেশিনে সামঞ্জস্যতা মোড ব্যবহার না করে IE আপডেট করতে পারেন (আইই 11 তে: সরঞ্জাম-> সামঞ্জস্যতা সেটিংস দেখুন -> সামঞ্জস্যতা প্রদর্শনে ইন্ট্রনেট সাইটগুলি আনচেক করুন)

আরও ভাল আপনি নিজের ওয়েবপৃষ্ঠায় মেটা ট্যাগগুলি আপডেট করতে পারেন। মধ্যে যোগ করুন:

...
<head>
   <meta http-equiv="X-UA-Compatible" content="IE=edge">
</head>
...

এটার মানে কি? এটি IE কে সর্বশেষতম সামঞ্জস্যতা মোড ব্যবহার করতে বলছে। এমএসডিএন-তে আরও তথ্য উপলব্ধ : লিগ্যাসির নথি মোড নির্দিষ্ট করে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.