2012-04-24 79 views
1

我有以下代码,使用jQuery实施得当(它已经过测试,函数):这个替换程序在JavaScript中有什么问题?

var notrightfake = $("#ansbox").val(); 
var notright = notrightfake.replace(" ", ""); 

$("#ansbox")和是input type="text"框。但是说我输入He llo t his is m e,是不是该程序应该显示Hellothisisme,而不是根本不工作?

的jsfiddle例子:http://jsfiddle.net/WUvu5/

感谢您的支持,

卢卡斯陈

+0

请创建于http://jsfiddle.net/ – Rumplin 2012-04-24 06:39:43

回答

6

replace功能只替换字符串的第一次出现。

你必须使用正则表达式替换所有出现:

var notright = notrightfake.replace(/ /g, ""); 
+0

此致工作的例子,但你可以解释我错了哪里? – think123 2012-04-24 06:39:29

+1

请参阅此处以获取解释:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/replace – mamoo 2012-04-24 06:43:42

1

你必须让实际的更换,你在你的代码只是赋值给一个变量。

var notrightfake = $("#ansbox").val(); 
$("#ansbox").val(notrightfake.replace(" ", "")); 

编辑:你必须使用一个事件,即。 keyup

$('input').keyup(function(){ 
    var newValue = this.value.replace(/\s/, ''); 
    $(this).val(newValue); 
}); 

演示:http://jsfiddle.net/elclanrs/3YWxh/

+0

正确。具体来说,Javascript的String#replace方法返回一个* new *字符串,它不会修改原始字符串。 – 2012-04-24 06:40:23

+0

谢谢,但我不想让答案框拿出来。 – think123 2012-04-24 06:41:17

+0

输入框用于用户输入,而不是计算机数据。 – think123 2012-04-24 06:53:43

0

尝试这种
notrightfake.replace(//GI, “”);

0

试试下面的代码:

var notrightfake = $("#ansbox").val(); 
var notright = notrightfake.replace(/\s+/g, ""); 
alert(notright); 

,或者你可以使用一些微调功能:

function trim(str) { 
    return str.replace(/^\s+|\s+$/g,""); 
}; 
function ltrim(str) { 
    return str.replace(/^\s+/,""); 
}; 
function rtrim(str) { 
    return str.replace(/\s+$/,""); 
};