2010-07-28 56 views
5

Tôi có một câu hỏi rất dễ. Thật không may, tôi không thể tìm thấy câu trả lời.jQuery nhiều ký tự thay thế

Tôi chỉ cần thực hiện 2 chức năng đầu vào đơn giản

Input 1:<br /><input type="text" id="i1" name="i1" /> 
Input 2:<br /> 
<input type="text" id="i2" name="i2" /> 

Khi thay đổi đầu vào 1, tôi muốn cho xuất hiện kết quả trong đầu vào 2. Ngoài ra tôi muốn có một số nhân vật được thay thế và tôi muốn làm cho nhân vật chữ thường (để sử dụng nó làm url).

Vì vậy, tôi thực hiện các mã jQuery sau:

$("#i1").keyup(function() { 
var ptitle = $("#i1").val(); 
$("#2").val(ptitle.replace(" ", "-").toLowerCase()); 
}); 

này hoạt động tốt, trừ khi tôi gõ một chuỗi có nhiều lần so với nhân vật tương tự để thay thế. Sau đó, nó chỉ thay thế lần đầu tiên.

Ví dụ: Khi tôi nhập vào 1: 'Giới thiệu về công ty này', nó sẽ dẫn đến nhập 2: 'về công ty này'. Nó nên là: 'về công ty này'. Có ai biết những gì đang xảy ra sai trong mã jQuery của tôi?

Trả lời

9

Something như thế này:

$("#i1").keyup(function() { 
    var ptitle = $(this).val(); 
    $("#i2").val(ptitle.replace(/\s/g, "-").toLowerCase()); 
}); 
+0

Wow, đó là cực kỳ nhanh chóng. Và bạn đã giải quyết được vấn đề của tôi. Cảm ơn nhiều! –

+0

Không sao, tôi thấy nhiều người có cùng câu trả lời. Tôi đã thay đổi '$ (" # i2 ")' bằng 'i' trong nó (ghi vào ví dụ của bạn) và tôi đã thêm regexp'/\ s/g' thay vì '" "'. – jerone

+1

Hãy chắc chắn rằng bạn có nghĩa là \ s thay vì '', sự khác biệt là \ s đại diện cho tất cả khoảng trắng [\ f \ n \ r \ t \ v \ u00A0 \ u2028 \ u2029]. Điều này có thể được tốt với bạn, nhưng tôi sẽ được remiss nếu tôi đã không đề cập đến nó. – Marc

2

này được vì thay thế đòi hỏi một lá cờ toàn cầu để thay thế nhiều trường hợp.

Hãy thử điều này

$("#i1").keyup(function() { var ptitle = $("#i1").val(); 
     $("#2").val(ptitle.replace(/ /g, "-").toLowerCase()); 
}); 

Dưới đây là một câu hỏi khá gần với bạn với một câu trả lời tốt:
Replacing spaces with underscores in JavaScript?

+0

Cảm ơn bạn rất nhiều vì câu trả lời của bạn! Vấn đề đã được giải quyết! –

0

làm việc này cho tôi

$(function(){ 
    $("#i1").keyup(function() { 
    var ptitle = $("#i1").val(); 
    $("#i2").val(ptitle.replace(/ /g,"-").toLowerCase()); 
    }); 
}); 
Các vấn đề liên quan