0

私は 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最初の行にあります。

4

3 に答える 3

2
document.getElementById('val')

する必要があります

document.getElementById('one')

この変更を行った場合、これをremoveCommaに送信する必要はありません。

これを保持する場合は、次の関数を使用します

function removeComma(val) {
    var values = val.value;
    var n=values.replace(/,/, "/"); 
    val.value=n;
}
于 2013-08-18T17:09:40.637 に答える
1

そのはず...

document.getElementById(val).value

...代わりに、おそらく入力テキストボックスごとにこの関数を個別に呼び出して、id をパラメーターとして関数に送信することになります。

更新: ...そして、あなたの編集はそうではないことを明確に示しています:要素自体を関数に渡しています。それは良いことですが、その要素の世話をする必要はありませんdocument.getElementById- あなたはすでにそれを持っています.

それでも、ここには別の問題があります。すべてのコンマを置き換える必要がある場合は、/gその正規表現に修飾子を追加する必要があります。そうしないと、複数のカンマ (たとえば、コピーと貼り付けによって追加されたもの) が置き換えられません。

全体として、次のように書き直します。

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

これは遊ぶためのフィドルです(そして、ここでは代わりにoninputハンドラで動作するそのフォークがあります - 私の意見では、後者はよりスムーズです)。

于 2013-08-18T17:11:19.703 に答える