JavaScript:プロパティが呼び出されるたびに新たに実行されるプロパティへの関数の割り当て
-
12-11-2019 - |
質問
HTML5 JSフォームライブラリを作成しています。このアイデアは、elementのデータ属性、検証などの命令、検証などの命令として、コンテンツ編集可能なDIVのクラスをクラスにすることです。
以下のコードは、フィールド値の最小長さが満たされているかどうかを確認する単一のフォーム項目の検証オブジェクトを作成します。オブジェクトのプロパティには、(EL)、フィールドの最小長さ(MINLEN)、最小長さが満たされていない場合に表示されるエラーメッセージ(MSGROR)、および返す関数(送信)が含まれます。オブジェクトが検証されているかどうか、それがそうでない場合はエラーメッセージを表示します。
しかし、submitプロパティ関数は常にfalseを返します。私は私が理由を知っていると確信していますが、それを修正するための最良の方法がわからない。私が走っている問題は、閉鎖の概念と関係があると思います。 Submitプロパティは、フォーム項目要素のinnerhtmlの長さをチェックし、それをMINLENプロパティに比較します。しかし、これは、innerhtml.lengthが常に0(フォーム項目、および検証オブジェクトがフィールドに入力できない前に作成する必要があるために作成する必要があるため、命令項目、および検証オブジェクトを作成する必要があるために作成する必要があります)を検証オブジェクトのインスタンス化の瞬間に発生すると思います。 )。 Submitプロパティ関数が呼び出されたときにSubmis Property関数を実行するように、以下のコードを変更するにはどうすれば(それによってインスタンス化の瞬間の長さではなく、フィールドのinnerhtmlの現在の長さをチェックします)?
function formValidateMinLen(item){
var minLen = item.attr('data-minLen');
this.el = item;
this.minLen = minLen;
this.msgError = item.attr('data-error_minLen');
this.submit = function(){
if(this.el.html() >= this.minLen){
return true;
}else{
this.el.after('<div class="msgError">' + this.msgError + '</div>');
return false;
}
}
}
item = new formValidateMinLen($('#registration-form .form-item:first'));
.
私は1つの解決策を考えました。
this.submit = function(html){
if(html >= this.minLen){
...
}
item = new formValidateMinLen($('#registration-form .form-item:first'));
item.submit($('#registration-form .form-item:first').html());
.
しかし、Item.SubmitコードのDOM要素を再指定する必要があるため、その解決策が似ていません(オブジェクトは既にそのELプロパティにそのDOM要素が含まれているため)。
だから...私は何をすべきか?
解決
私はばかです。InnerHTMLの最小長までの長さではなく、InnerHTMLを最小長さと比較していました。今それは動作します:)