2012-12-15 41 views
7

câu hỏi của tôi rất đơn giản nhưng tôi không thể tìm ra cách để làm điều đó.Jquery nhận được các từ ngẫu nhiên từ textarea

Tôi có một vùng văn bản với một số văn bản và tôi muốn nhận 5 từ ngẫu nhiên từ văn bản và đặt chúng vào trường nhập khác (tự động). Tôi không muốn là những từ cụ thể. 5 từ ngẫu nhiên. Đó là nó. Cảm ơn!

Ví dụ:

"Lorem ipsum dolor sit Amet, consectetur adipisicing elit, sed làm eiusmod tempor incididunt ut labore et dolore magna aliqua Út quảng cáo Enim nốt trắng veniam, quis nostrud exercitation ullamco laboris tạm thời ut. aliquip cũ ea COMMODO consequat. Duis aute irure dolor trong reprehenderit trong voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat phi proident, sunt trong culpa qui officia deserunt mollit anim id est laborum."

Trường nhập có chứa khi văn bản này được ghi, giả sử: ipsum, amet, veniam, velit, deserunt.

+1

bạn đã thử những gì? – charlietfl

+0

Điều này là khá thẳng về phía trước -> [** FIDDLE **] (http://jsfiddle.net/dDmP8/) – adeneo

+0

Ok, nó hoạt động trong http://jsfiddle.net/cwrxV/ nhưng khi tôi cố gắng đưa vào trang web của tôi nó sẽ không hoạt động! Vấn đề là gì, hãy giúp tôi tìm ra. Cảm ơn các bài đăng trước. Mã HTML của tôi bằng với điều này mà tôi đã dán trong jsfiddle và tôi tải mã jquery từ , từ , từ tệp js bên ngoài. Kết quả giống nhau ...:/ –

Trả lời

4

Đây là đề nghị của tôi cho các luồng công việc:

  1. Nhận các từ từ văn bản
  2. Xóa các từ khóa trùng lặp
  3. Lặp mảng có được chữ và loại bỏ nó từ mảng (tránh trùng lặp) mã

dụ:

var text = "Lorem ipsum ......"; 
var words = $.unique(text.match(/\w+/mg)); 
var random = []; 

for(var i=0; i<5; i++) { 
    var rn = Math.floor(Math.random() * words.length); 
    random.push(words[rn]); 
    words.splice(rn, 1); 
} 

alert(random): 

dụ làm việc trong jsFiddle

+0

+1 rất gọn gàng thực sự –

4

này nên làm việc:

var content = $("#myTextarea").val(), 
    words = content.split(" "); 

var randWords = [], 
    lt = words.length; 

for (var i = 0; i < 5; i++) 
    randWords.push(words[Math.floor(Math.random() * lt)]); 

$("#otherField").val(randWords.join(" ")); 

EDIT: Để ngăn chặn bản sao, bạn có thể sử dụng như sau:

var nextWord; 
for (var i = 0; i < 5; i++) 
{ 
    nextWord = words[Math.floor(Math.random() * lt)]; 
    if (("|" + randWords.join("|") + "|").indexOf("|" + nextWord + "|") != -1) 
    { 
     i--; 
     continue; 
    } 
    randWords.push(nextWord); 
} 
+1

có vẻ đúng, nhưng bạn đang cho phép trùng lặp. –

+0

Bạn nên kiểm tra xem mảng có chứa chuỗi đó hay không, với mã indexOf –

+0

được mã hóa để ngăn trùng lặp. – WebStakker

1

Thậm chí ngắn hơn:

var str = 'Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt.'; 

function rWords(t) { 
    for (var i = 5, s = t.match(/(\d|\w|')+/g), r = [] ; i-- ; r.push(s[ Math.random() * s.length | 0 ])); 
    return r.join(', ').toLowerCase(); 
} 

console.log(rWords(str)); 
> lorem, eiusmod, elit, dolor, do 
Các vấn đề liên quan