1

検証が必要なフォームがあり、通常とは少し異なる方法で行うことにし、メイン関数に小さな関数を呼び出すようにしました

function validate() {
 validate_this(*fieldId*);
 validate_that(*fieldId*);
 ...
}

小さな関数は次のようになります。

function validate_empty(formField) {
 if ( formName.formField.value.length = 0; ) {
  //Do Stuff
 }
}

formFieldフォーム内のフィールド ID です。ただし、これはformName.formField.value.length

Uncaught TypeError: Cannot read property 'value' of undefined 

文字列やnullの代わりに実際のfieldIdを解析するにはどうすればよいですか? jQueryは論外です。

4

2 に答える 2

1

あなたのコードの見方では、JS は という変数formName、またはフォームの実際の名前が何であれ、それが DOM 要素であることを指定する必要がありますdocument.forms[0]

それでも、if比較ではなく代入しているため、常に true と評価されます。

var foo = 0;//single  = : assignment operator
console.log(foo == '0');//true, loose comparison (type coerced)
console.log(foo === '0');//false, strict comp: type && value

それとは別に、フォームを検証する方法は非常に疑わしいです... JSをCなどの言語のように使用しているようです。JS IMHO は、イベント駆動型の関数型プログラミング言語として最適です。
したがって、これは厳密には ATM に関連するものではありませんが、JS の強みを検討することを検討してください。JS は、この種の乱用に値しない、きちんとした小さな言語です。

于 2013-04-05T12:01:03.213 に答える
1

代わりに使用することをお勧めしdocument.getElementByIdます:

function validate_empty(formField) {
    if ( document.getElementById(formField).value.length == 0 ) {
        //Do Stuff
    }
}
于 2013-04-05T11:51:10.480 に答える