2011-11-14 20 views
48

को विभाजित करने के लिए कैसे करें I jquery का उपयोग कर रहा हूं, और मेरे पास टेक्स्टरी है, इसलिए जब मैं बटन सबमिट करता हूं तो मैं प्रत्येक पाठ को नई लाइन से अलग कर दूंगा। नई लाइन से कैसे विभाजित करें?जावास्क्रिप्ट नई लाइन

var ks = $('#keywords').val().split("\n"); 
    (function($){ 
    $(document).ready(function(){ 
     $('#data').submit(function(e){ 
      e.preventDefault(); 
      alert(ks[0]); 
      $.each(ks, function(k){ 
       alert(k); 
      }); 
     }); 
    }); 
    })(jQuery); 

उदाहरण इनपुट:

Hello 
There 

परिणाम मैं चाहता है:

alert(Hello); and 
alert(There) 

उत्तर

54

अपने प्रस्तुत समारोह अंदर ks चर आरंभ की कोशिश करो।

(function($){ 
    $(document).ready(function(){ 
     $('#data').submit(function(e){ 
      var ks = $('#keywords').val().split("\n"); 
      e.preventDefault(); 
      alert(ks[0]); 
      $.each(ks, function(k){ 
       alert(k); 
      }); 
     }); 
    }); 
    })(jQuery); 
+1

अलर्ट (के) केवल अनुक्रम संख्या को अलर्ट करता है, मूल्य नहीं। आपको सतर्क करना चाहिए (केएस [के]) – HBlackorby

+2

@ hblackorby आपकी टिप्पणी, हालांकि प्रासंगिक है, कुछ हद तक मूक बिंदु है क्योंकि ओपी का प्राथमिक मुद्दा यहां उनके चर के "केएस" –

30

यह होना चाहिए

yadayada.val.split(/\n/) 

आप विभाजन आदेश, नहीं एक regex के लिए एक शाब्दिक स्ट्रिंग में गुजर रहे हैं।

+6

का दायरा और प्रारंभिक था, तो क्या? विभाजन करने के लिए "\ n" क्या गलत है? –

+3

'" \ n "' और '/ \ n /' जेएस में दो अलग-अलग चीजें हैं। '" '= स्ट्रिंग,'/'= regex। –

+21

हां, लेकिन प्रभावी अंतर क्या है? '\ n" 'और'/\ n/'एक ही चीज़ से मेल नहीं खाते? –

3
  1. alert(k)

(function($){ 
    $(document).ready(function(){ 
     $('#data').submit(function(e){ 
      e.preventDefault(); 
      var ks = $('#keywords').val().split("\n"); 
      alert(ks[0]); 
      $.each(ks, function(k){ 
       alert(ks[k]); 
      }); 
     }); 
    }); 
    })(jQuery); 

Demo

0

समस्या यह है की

  • उपयोग alert(ks[k]) बजाय ईवेंट हैंडलर के अंदर var ks = $('#keywords').val().split("\n"); ले जाएँ कि जब आप प्रारंभ ks, value सेट नहीं किया गया है।

    आप उपयोगकर्ता को फ़ॉर्म सबमिट करने पर मान लाने की आवश्यकता है।

    var m = "Hello World"; 
    var k = m.split(' '); // I have used space, you can use any thing. 
    for(i=0;i<k.length;i++) 
        alert(k[i]); 
    
  • 0

    Good'ol जावास्क्रिप्ट ks आरंभ कर देगा। इसे और अधिक सुविधाजनक है :)

    var parse = function(){ 
        var str = $('textarea').val(); 
        var results = str.split("\n"); 
        $.each(results, function(index, element){ 
        console.log(element); 
        }); 
    }; 
    
    $(function(){ 
        $('button').on('click', parse); 
    }); 
    

    आप जब से तुम textarea उपयोग कर रहे हैं यह here

    0

    यहाँ console.log बजाय alert() साथ उदाहरण है: तो आप की जरूरत कॉलबैक फ़ंक्शन के अंदर

    (function($){ 
        $(document).ready(function(){ 
         $('#data').submit(function(e){ 
         //Here it will fetch the value of #keywords 
         var ks = $('#keywords').val().split("\n"); 
         ... 
         }); 
        }); 
    })(jQuery); 
    
    14

    कोशिश कर सकते हैं, आप पा सकते \ N या \ r (या \ r \ n) लाइन ब्रेक के लिए। तो, निम्नलिखित सुझाव दिया है:

    $('#keywords').val().split(/\r|\n/)

    रेफरी: check whether string contains a line break

    +18

    या अधिक विशेष रूप से, '/ \ r? \ n /' ... मुझे लगता है कि '|' (या) सीआरएलएफ लाइन के अंत के लिए खाली परिणाम अंतःस्थापित करेंगे। – Dusty

    +1

    @ डस्टी ग्रेट! यह सही है। – Turtle

    7

    आप नई-पंक्तियों परवाह किए बिना मंच (आपरेशन प्रणाली) का पार्स चाहिए नियमित अभिव्यक्ति के साथ इस विभाजन सार्वभौमिक है, तो आप पर विचार कर सकते उपयोग इस।

    var ks = $('#keywords').val().split(/\r?\n/); 
    

    उदा।

    "a\nb\r\nc\r\nlala".split(/\r?\n/) // ["a", "b", "c", "lala"] 
    
    0

    बस

    var ks = $('#keywords').val().split(/\r\n|\n|\r/g);

    पूरी तरह से काम करेंगे।

    सुनिश्चित करें कि \r\nRegExp स्ट्रिंग के अग्रणी पर रखा गया है, क्योंकि इसकी पहले कोशिश की जाएगी।

    संबंधित मुद्दे