こんにちは!
フリーランスプログラマーの阿部拓哉です!
またまた、私が開発中につまづいた点の備忘録的な内容になります。
ASP.NETで画面にテキストボックスを新規追加するという改修を担当しました。
元からあるテキストボックスAと、新規追加したテキストボックスB、
少なくともどちらか一方が入力されていれば更新ボタンを押せる(つまり、A、Bともに未入力の場合は入力チェックでエラーとなる)ようにする、という内容です。
既存のテキストボックスAにはRequiredFieldValidatorが付与されていたので、このままでは(Aが単独で必須入力になってしまうので)要件に合わず、
A、BともにRequiredFieldValidatorを持たない普通のCustomValidatorコントロールで実装して、
AとBのどちらかが入力されているか、というチェック処理のコードをjavascriptで書きました。
動作確認をして、入力チェックはOK…かと思いきや、
AとBともに未入力の場合にエラーにならず、首をかしげました。
javascriptのコードは正しく書いたはずなのに…
調べた結果、CustomValidatorコントロールの『ValidateEmptyTextプロパティ』がデフォルトのfalseだと、
対象のコントロールの値が未入力の場合は無条件でバリデーションOKになるとのことで、
私がつまづいたのはまさにこのパターンでした。
ValidateEmptyTextプロパティをtrueで明示したところ、AとBともに未入力の場合にちゃんとエラーになってくれました。
まだまだ勉強が必要ですね…
以上です!
最後までお読みいただきありがとうございました!