用JavaScript替换逗号和斜杠

时间:2013-08-18 17:07:53

标签: javascript

我正在尝试用JavaScript中的,替换/并编写下面的代码。表单中有多个文本框。我想编写一个函数并在所有文本字段上调用它们。

我遇到的问题是我无法将当前ID发送到JavaScript方法。这怎么做得好?

function removeComma(val) {
  var values = document.getElementById('val').value;   //Object Required Error
  var n=values.replace(/,/, "/"); 
  document.getElementById('val').value=n;
}

<input type="text" id="one" name="one" onkeypress="removeComma(this)">
<input type="text" id="two" name="two" onkeypress="removeComma(this)">
<input type="text" id="three" name="three" onkeypress="removeComma(this)">

我从上面的代码中获得的错误是第一行的OBJECT REQUIRED

3 个答案:

答案 0 :(得分:3)

您将点击的元素传递给您的函数,因此您根本不需要document.getElementById()。这可以解决您的问题。

function removeComma(val) {
    var values = val.value;
    var n=values.replace(/,/g, "/"); 
    val.value=n;
}

另请注意,onkeypressinput元素的值更改之前被触发。如果您要使用onkeyup的上次更新值,则可以使用oninput或更确切地说input

如果你真的必须使用元素的id,你需要在参数中传递它:

<input type="text" id="one" name="one" onkeypress="removeComma(this.id)">

然后同时删除val周围的引号:

var values = document.getElementById(val).value;

答案 1 :(得分:2)

document.getElementById('val')

应该是

document.getElementById('one')

如果您进行此更改,则无需将其发送至 removeComma

如果您保留,请使用以下功能

function removeComma(val) {
    var values = val.value;
    var n=values.replace(/,/, "/"); 
    val.value=n;
}

答案 2 :(得分:1)

应该是......

document.getElementById(val).value

...相反,因为你可能会分别为每个输入文本框调用此函数,将它们的id作为参数发送到函数中。

更新: ...您的编辑清楚地显示即使不是这样:您将元素本身传递给函数。这很好,但是你不必用document.getElementById来照顾那个元素 - 你已经拥有它了。

但是,还有另一个问题:如果你需要替换所有逗号,你需要为该正则表达式添加/g修饰符。否则,将不会替换多个逗号(例如,通过复制粘贴添加)。

总的来说,我会像这样重写:

function removeComma(el) {
  el.value = el.value.replace(/,/g, '/');
}

这是一个fiddle可以使用(这里是forkoninput处理程序一起工作 - 在我看来,后者更顺畅)。