2013-09-26 6 views
5

フォームの検証にjQuery validation pluginを使用しています。しかし、divの検証を設定できません。jQueryの検証を使用してdivの検証を設定する

<form id="form"> 
    <div id="location" name="location"></div> 
</form> 

JS:

$('#form').validate({ 
      rules: { 
      isLocationEmpty: true; 
      } 
}); 

CustomValidation Mehthod:

ここ

は、私がこれまで

HTMLを試してきたものです

$.validator.addMethod('isLocationEmpty', function (value, element) { var loc = $('#location').text(); return (loc != "") }, 'REQUIRED.'); 

私は以前これを行っていませんので、ご提案をお願いします。

+2

なぜあなたの代わりにそこにdiv要素を使用しようとしています実際のフォーム入力の? – andi

+0

これはおそらく、開発者がユーザーがdivを検証しようとしないと思ったからでしょう。 – user1

+0

@andi私の友人の既存の作品です。フォームにはinput要素とdivのようなdiv要素があります。それゆえ私はこれを試しています。 – Praveen

答えて

8

見積OP:

「私はしかし、私はdivの検証を設定することができないんだ....私のフォーム検証のためのjQueryの検証プラグインを使用していますI避難所。以前はこれをやったことがありません、あなたの提案を提供してください。

あなたはdivを検証するためにjQueryの検証プラグインを使用することはできません。データ入力のための適切なHTMLマークアップは入力要素を使用することです。

このプラグインのみもform素子容器内でなければならない、(各一意name属性を持たなければならない)のデータ入力要素の以下の種類に動作します:

<form> 

    <!-- // Input - Also including the various HTML5 input types 
    // type = text, password, radio, checkbox, file, etc. --> 
    <input type="text" name="something" /> 

    <!-- Hidden Input - 'ignore: []' must be defined in the options --> 
    <input type="hidden" name="hide" /> 

    <!-- Select Dropdown --> 
    <select name="foobar"> ... </select> 

    <!-- Text Area Box --> 
    <textarea name="barfoo"></textarea> 

</form> 

も参照ドキュメントの「参照」のページ:http://jqueryvalidation.org/reference/


どうやらOPはHTMLを変更することはできません。ここでは非常に醜い回避策です。

divのテキストをtype="hidden"要素にコピーするために使用できるコード。隠し要素をプラグインで検証できます。このコードは、いつでも呼び出したりぼかしたり変更時に火災にイベントハンドラ内に配置することができます:ここでは

$("#hidden").val($('#div').text()); 

は、対応するjQueryのです:

$('#form').validate({ 
    ignore: [], // <-- validate hidden elements 
    // other options, rules, and callbacks, 
}); 
+0

ブリーフをありがとう。このプラグインと同様の回避策がありますか? – Praveen

+0

@ user1671639、なぜこれらのdiv要素を適切なデータ入力要素に変更できないのかわかりません。理由が何であれ、私が想像できる唯一の回避策は、 'change'や' blur'のようなイベントで、 'div'から' type = "hidden"要素にデータをコピーするためにjQueryを使うことです。次に、この隠し要素をjQuery Validateでターゲット設定します。 – Sparky

+0

それは既存のプロジェクトなので、私はこれを行うことができません。しかし、これは私が今まで試したことですhttp://jsfiddle.net/jZVA2/34/。これはあなたが最後に意味していたものですか?それが正しい方法であれば教えてください。 – Praveen

-2

私はなぜあなたがdivを検証しようとしているのか分かりませんが、私はそれをテキストエリアにすることをお勧めします。ユーザーが編集できないようにする必要がある場合は、readonly属性を追加します。

<form id="form"> 
    <textarea id="location" name="location" readonly></textarea> 
</form> 
+1

'readonly'ならば、それを検証する必要はありません。 – Sparky

+2

なぜですか?おそらく彼のdivの内容はjavascriptで動的に変更され、検証処理中に何かがあることを確認したいと思うかもしれません。 divは「読んだだけ」なので、あなたの考えも同様に適用されることを思い出してください。それが何かを持っていることを確認する必要がある理由はわかりません。 – dajavax

+0

_client_-side検証のポイントは、**ユーザーの**経験です。ユーザーがデータと対話できない場合は、データを検証する必要はありません。つまり、入力していないデータや制御できないデータについてユーザーに警告メッセージを表示する理由は何ですか。意味がない。 – Sparky

関連する問題