0

フォームとjQuery関数の2ビットのコードがあります。

私の問題は、クラス属性を取得して、フォーム検証関数で使用したいということです。検証にValidityJSを使用しています。

これは私が持っているものです:

<input type="text" name="name" value="" id="field_01" class=".require().minLength(5)" />

JS関数では:

var checks_to_apply = $("#field_01").attr("class").split(" "), 
i, l;

var checks = "";

for (i = 0, l = checks_to_apply.length; i < l; i++) {

        checks += checks_to_apply[i];
    }
$("#field_01")+checks;
...
...

ここでの正しい動作は尊重されません。

これは私が「チェック」アラートから得たものです:

.require().minLength(5)

しかし、そのように実行することは、次のようにjQuery関数で直接実行することと同じではありません。

$("#field_01").require().minLength(5);

私が間違っているのは、メソッドの問題は、.require().minLength(5)実行するjQueryコードではなく、文字列として認識されているためだと思います。

それを修正する方法について何かアイデアはありますか?

4

2 に答える 2

0

特定のオブジェクトでこれらの関数を実行しているため、引数全体を文字列として作成し、eval() を介して実行する必要があります。

var checks_to_apply = $("#field_01").attr("class").split(" "), 
i, 
l;

var checks = "$('#field_01')";

for (i = 0, l = checks_to_apply.length; i < l; i++) {
   checks += checks_to_apply[i];
}
eval(checks);

ただし、class 属性を誤用しているため、別の検証プラグインを使用することをお勧めします

于 2012-07-05T11:47:56.350 に答える
0

ほとんどの場合、このようなものが必要です

まずはここで変更class="require minLength" minlengthdata="5"

    var classes = $('#field_01').attr('class').split(" ");
    var data = $('#field_01').attr('minlengthdata');

   for (i = 0, i < classes ;  i++) {
      if(classes[i] == 'require'){
   alert('its a requred field');
        }
    if(classes[i] == 'minLength' && data > 0){
   alert('minimum value required');
        }


  }
于 2012-07-05T11:51:27.293 に答える