2010-07-28 54 views
5

我有一个很容易的问题。不幸的是,我找不到答案。jQuery多字符替换

我刚制成2个简单的输入功能

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

当改变输入1,I想让出现的结果在输入2.还欲被替换一些字符,我想使字符小写(为了使用它作为一个网址)。

所以,我提出以下jQuery代码:

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

这工作不错,只是当我输入有多次相同的字符替换字符串。那么它只会取代第一次。

例如:当我在输入1中输入:'关于该公司'时,将导致输入2:'关于该公司'。它应该是:'关于这家公司'。有谁知道我的jQuery代码出了什么问题?

回答

9

事情是这样的:

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

哇,这是极端的快。你确实解决了我的问题。非常感谢你! – 2010-07-28 19:58:54

+0

没问题,我看到多个人有相同的答案。我用'i'改变了'$(“#i2”)'(与你的例子一致),并添加了正则表达式'/ \ s/g'而不是你的'''''。 – jerone 2010-07-28 20:01:47

+1

请确定您的意思是\ s而不是'',不同之处在于\ s表示所有空格[\ f \ n \ r \ t \ v \ u00A0 \ u2028 \ u2029]。这对你来说可能没问题,但如果我没有提到它,我会失职。 – Marc 2010-07-28 20:04:11

2

这是因为更换需要一个全球性的标志来代替多个实例。

试试这个

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

这里有一个很好的回答你的一个相当接近的问题:
Replacing spaces with underscores in JavaScript?

+0

非常感谢您的回答!问题已经解决了! – 2010-07-28 20:01:54

0

这对我的作品

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