フィールドをチェックして、数字であるかどうかを判断しようとしています (. 以外の数字以外の文字は使用できません)。フィールドの値が数値の場合は、2 進数形式に変換します。現在、コードは FireFox と Chrome で動作していますが、Internet Explorer で問題が発生しています (複数のバージョン、具体的には IE8 と IE9 でテスト済み)。私は数時間それをいじっていましたが、問題の解決策を探すことができませんでした. Internet Explorer では、最初のフィールドのみが正しく機能します。他のフィールドは正しく機能せず、Internet Explorer はエラーをトリガーしません。
これは、html ファイル内の関連するコードです。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<script type="text/javascript" src="amount.js"></script>
</head>
<body>
<input type="text" id="amount1" onChange="changeAmount(this.id);"/>
<input type="text" id="amount2" onChange="changeAmount(this.id);"/>
<input type="text" id="amount3" onChange="changeAmount(this.id);"/>
<input type="text" id="amount4" onChange="changeAmount(this.id);"/>
<input type="text" id="amount5" onChange="changeAmount(this.id);"/>
</body>
</html>
これは amount.js からの関連コードです。
function changeAmount(input)
{
var pattern = /([^0-9\.])+/;
var ctl = document.getElementById(input);
var myvalue = ctl.value;
if(myvalue != "" && !pattern.test(myvalue))
{
myvalue = parseFloat(myvalue);
myvalue = myvalue.toFixed(2);
if(!pattern.test(myvalue))
{
ctl.value = myvalue;
}else
{
ctl.value = '';
}
}
}
ここでさらにいくつかのスレッドを参照して、解決策が見つからないかどうかを確認します。
事前に助けてくれてありがとう。