私のコードでは、フォームのjavascript関数onsubmitと呼ばれ、formname.fieldname.valueを使用してフィールドに検証を行う関数内で、うまく動作しますが突然表示されますエラー "formnameが定義されていません"。事前にjavascriptフォームの検証が突然動作しなくなる
おかげ
私のコードでは、フォームのjavascript関数onsubmitと呼ばれ、formname.fieldname.valueを使用してフィールドに検証を行う関数内で、うまく動作しますが突然表示されますエラー "formnameが定義されていません"。事前にjavascriptフォームの検証が突然動作しなくなる
おかげ
いくつかの可能な理由:
コードを投稿すると、しかし、とにかく何が起こっているのか分かっていると思う。 onsubmit関数の中には、正しい変数スコープはありません。私は通常これを回避するために、<form>
への参照を関数に渡します。これは本当に簡単です。
<form onsubmit="return doValidation(this);">
、その後、あなたのjavascript:
function doValidation(form) {
form.fieldOne.value = ... // etc
};
絶対に
<form name="myForm">
function doValidation() {
var form = document.myForm;
form.fieldOne.value = ... // etc
}
それを参照するようになり、他の方法で「formname.fieldname.valueは、」持つべきではないんIEのハックですどこでも働いた。それを使用しないでください。フォームはグローバル変数(ウィンドウメンバー)として登録されるはずではありません。また、互換性の問題もあり、状況によってはスクリプトが「停止」する可能性があります。
は考える:
<form name="foo" method="get" action="/"> ...
<input name="bar" type="text" value="" />
古い学校のDOMレベル0 HTMLの方法で入力にアクセスするための正しい方法は次のとおりです。
document.forms.foo.elements.bar
これは、Netscapeの2先史時代に戻ってブラウザ間で動作していますグローバル 'ウィンドウ'(名前があなたが誤って選択する可能性のあるメンバーが増えているオブジェクト)の代わりに、 'document.forms'配列を使用することで、名前衝突を引き起こす可能性は非常に低くなります。
は、しかし、これらの日、それはおそらく、IDを使用するのが最も簡単で、DOMレベル1コアのgetElementByIdを方法:
<form method="get" action="/"> ...
<input name="bar" type="text" value="" id="field-bar" />
document.getElementById('field-bar')
単純であり、ウィンドウ、文書またはフォームオブジェクトのメンバーとは衝突を持っていません。
"突然"ええ?あなたが助けてくれるいくつかのコードを投稿する必要があります - javascript、フォームコードなど – Steven
問題があるコードを投稿すると、より適切な(より正確で正確な)アドバイスが得られます。さもなければ、我々は推測を与えることができます。 – Sean