2012-02-15 58 views
5

Tôi có cuộc gọi JQuery AJAX sau đây gửi dữ liệu biểu mẫu HTML tới tập lệnh phía máy chủ của tôi để xử lý. Tuy nhiên tôi hiện đang tìm các ngắt dòng và chuyển đổi chúng thành <br /> để hiển thị trong một phần khác của đơn đăng ký của tôi. Bây giờ tôi cần phải chắc chắn rằng tôi đang loại bỏ các dấu nháy đơn tuy nhiên tôi không tự tin về cách thay thế nhiều ký tự trong một lần.Tìm nhiều ký tự và thay thế bằng JQuery

Đây là JQuery tôi sử dụng hiện tại trước khi thêm vào AJAX của tôi.

description = $("#description").val().replace(/\n/g, '<br />'); 

Mọi người có thể chỉ cho tôi đúng hướng không?

Cảm ơn

+0

trùng lặp có thể xảy ra [Javascript Value Thay thế cho Nhiều giá trị] (http://stackoverflow.com/questions/ 9073372/javascript-value-replace-cho-nhiều-giá trị) –

Trả lời

15

Bạn không cần phải làm điều đó trong một đi trong cảm giác của một cuộc gọi đến .replace(), chỉ cần chuỗi nhiều .replace() cuộc gọi:

description = $("#description").val().replace(/\n/g, '<br />') 
            .replace(/'/g, ''); 

(Hoặc thay bằng '&#39;' hoặc '&apos;' nếu đó là những gì bạn cần ...)

+0

Đây là điểm trên! Tôi đã không nghĩ rằng nó woul dbe rằng đơn giản! –

+0

Ngoài ra, bất cứ ai có thể cho tôi biết tại sao origional thay thế(), có thể làm cho nó thay thế "0" bằng "" ... –

1

Phương pháp .serialize() sử dụng encodeURIComponent để mã hóa tất cả các trường của bạn trong một biểu mẫu để bạn không phải tự thoát chuỗi.

Nếu nó không phải là trong một hình thức chỉ cần sử dụng:

description = encodeURIComponent($("#description").val()); 
0

Hãy thử này Đặt giá trị của bạn trong các biến và thay thế.

$(function() { 
      var s = "str"; 
      var t = "nw str"; 
      alert(s.replace(s, t)); 
     }); 
0

bạn có thể tạo hàm đệ quy

function replaceBr(){ 
    var val = $("#description").val();  
    while (val !=(val = val.replace(/\n/g, '<br />'))); 
    return val; 
} 

thx

+0

Cờ g trong regex có nghĩa là tất cả các lần xuất hiện của mẫu sẽ được thay thế, bạn không cần phải thêm một vòng lặp. – nnnnnn

2

Tôi đồng ý với nnnnnn mà bạn không cần phải làm tất cả trong một đi mặc dù bạn có thể sử dụng hoặc vận hành | regex và sử dụng gọi lại như dưới đây, xem mdn regex để biết thêm chi tiết

var foo = '"there are only 10 people in this world that understand binary, 
      \n those who can and those who can\'t"\n some joke'; 

foo = foo.replace(/\n|"/g, function(str) { 
    if (str == '\n') { 
    return '<br/>'; 
    } else { 
    return ''; 
    } 
}); 

document.write(foo); 

đây là một demo

2

Bạn có thể sử dụng | (Ống) để bao gồm nhiều nhân vật để thay thế:

str = str.replace(/X|x/g, ''); 

(thấy fiddle tôi ở đây: fiddle)

Các vấn đề liên quan