Javascript从文本框值中删除空格

Javascript从文本框值中删除空格,javascript,whitespace,spaces,Javascript,Whitespace,Spaces,我已经到处找了很多,但找不到一个具体的例子来说明我想做什么。基本上,我想通过文本框的名称(而不是id)获取文本框的值。然后我想删除所有空格,不仅仅是前导或尾随,还有文本中的空格。例如,对于此html代码: <INPUT style="TEXT-ALIGN: right;" onkeyup="fieldEdit();" onchange="fieldChange();" NAME="10010input" VALUE="4 376,73" readonly > 我有一个javas

我已经到处找了很多,但找不到一个具体的例子来说明我想做什么。基本上,我想通过文本框的名称(而不是id)获取文本框的值。然后我想删除所有空格,不仅仅是前导或尾随,还有文本中的空格。例如,对于此html代码:

<INPUT style="TEXT-ALIGN: right;" onkeyup="fieldEdit();" onchange="fieldChange();" NAME="10010input" VALUE="4 376,73" readonly >

我有一个javascript:

var val = document.CashSheet.elements["10010input"].value; 
val2 = val.replace(<someregex>, '');
alert(val2);
var val=document.CashSheet.elements[“10010input”].value;
val2=val.replace(,'');
警报(val2);

但是我已经尝试了许多可用的正则表达式来删除所有空格,但是所有表达式似乎都只删除前导空格和尾随空格,例如,在上面的警告中,4 376,73以上的值应该读为4376,73,但它没有。在研究了这个用于从文本字段中删除空格的普通正则表达式之后,我认为它不起作用,因为它是在web服务器上以波兰语本地化设置填充的。我需要为“Polish space”捕获什么\u char/regex exp可以说,在ascii中是20,但大多数人建议的用于空格的regex exp无法捕获它。

您可以使用
document.getElementsByName
来获取元素,而无需遍历表单,只要页面中没有其他元素具有相同的名称。要替换所有空格,只需使用正则表达式,并在元素值的
replace()
方法中设置全局标志:

var el = document.getElementsByName("10010input")[0];
var val = el.value.replace(/\s/g, "");
alert(val);
您需要“概括”您正在使用的regexp,以便它应用于所有匹配项,而不仅仅是第一个匹配项。像这样:

val = val.replace(/\s/g, '')

请注意修改regexp的“g”,使其变为“general”。

您可以使用这个jQuery方法

val=$.trim(val)
val=jQuery.trim(val)

这里有一个我用来替换空格的函数

function removeSpaces(val) {
   return val.split(' ').join('');
}

另一个更像jQuery的选项:

$(".stripspaces").keyup(function() {
    $(this).val($(this).val().replace(/\s/g, ""));
});

试试这个

<script language="JavaScript">
function RWS(str){
  return str.replace(/^\s+/,"").replace(/\s+$/,"").replace(/\s+/g," ");
}
</script>

<form name=f1ex>
<textarea name="t2" rows="5" onChange="this.value=RWS(this.value)"></textarea>
</form>

函数RWS(str){
返回str.replace(/^\s+/,“”)。replace(/\s+$/,“”)。replace(/\s+/g,“”);
}
试试这个:-你可以尝试写入或复制粘贴任何字符串,包括空白,它会自动删除

/*不允许在文本框中键入SPCE*/
函数AvoidSpace(事件){
var k=事件?event.which:window.event.keyCode;
如果(k==32)返回false;
}
/*自动删除字符串前、后和中间的空格*/
函数RemoveSpace(字符串){
返回字符串.split(“”).join(“”);
}


+1表示
\s
字符类;我可能会用“global”而不是“general”@Michael:为什么这里的
\s
比一个空格字符要好得多?
中不能有任何换行字符,文本框中通常不会键入非换行空格。@迈克尔·哈伦:我知道它是以“g”开头的,但我不知道它到底是哪一个@蒂姆·唐恩:我认为\s更具可读性,不是吗?@Abel:Dunno。我得说,相当主观。这不是一个大问题,
\s
可能是更好的选项功能方面。@Tim有几十个空白字符可以粘贴,不是简单的“空格”嗨,Tim,快速提问,我正在尝试你对文本字段内容的建议,但它不起作用,我相信这是因为它在web服务器上以波兰语本地化设置填充。我需要为“波兰空格”捕获什么\u char?可以说,在ascii中,它显示为20,但正则表达式不捕获它,而是将捕获我自己放入字符串中的其他空格。真的吗?你确定那不是20英寸的十六进制吗(正常空格字符是20英寸的十六进制)?如果需要指定要匹配的空格字符列表,可以执行类似于
newregexp([\\s\u1234\u4321],“g”)
的操作,而不是
/\s/
。是的,它的返回方式类似于“4376”,如果我尝试使用该正则表达式,它不会执行任何操作,但是如果我在该字符串的末尾添加“a”,正则表达式将使其输出如下:“4376aa”因此,它可以在我的空间上工作,但不能在从波兰web服务器返回的空间上工作。我认为这是一个不同的Unicode空格字符,我将尝试找到它是哪一个,然后使用新的RegExp调用。好的,我找到了它的\u00A0,所以是nbsp,但需要找到一个与之匹配的regex,因为新的RegExp([\\s\u00A0],“g”)不起作用:(真的?
新的RegExp([\\s\u00A0],“g”)。test(“\u00A0”);
对我有效,包括在IE中(其中
\s
\u00A0
不匹配,违反了ECMAScritp规范)。这只会删除字符串中的前导空格和尾随空格,而不会删除字符串中的Unicode空格:(太多的jQuery…此外,此页面上的所有答案都有一个主要缺陷:通过始终设置值,插入符号始终移动到末尾,即使框中没有空格。更好的解决方案是首先检查输入的值。