1

Rails3.1.0でclient_side_validationsgemを使用しています。私はこれを使用して、JavaScriptウィジェットを介して設定された非表示フィールドを検証しようとしています。私がgemのgithubページで読んだことから、ユーザーがこれらのフィールドを修正できなかったため、gemは意図的に非表示フィールドを検証しません。この動作を無効にしようとしましたが失敗しました。

client_side_validationsコード(gemのインストール時に生成されるinitのものを除く)を変更せずに、特定のフィールドのこの動作をオーバーライドする方法はありますか?

私が今やった方法は、gemのvalidateForm関数にわずかな変更を加えることです。検証するフィールドを探すとき、表示されている要素のみを取得します。

form.find(':input:enabled:visible[data-validate]').each(function() 

だから私はそれをこれに変更しました:

form.find(':input:enabled[data-validate]').each(function() 

これはうまくいくようです。もっと良い方法はありますか?

ユーザーが間違いを訂正したときに、非表示のフィールドを再検証できませんでした。

4

3 に答える 3

5

隠しフィールドを検証したい場合は、それを行う方法です

于 2013-01-07T23:18:50.847 に答える
1

@mushroomはclient_side_validationsバージョン3.1について質問しましたが、バージョン3.2.xを使用している人は、これを構成できるようになりました。

3.2-stableブランチのこのコードは、それがどのように行われるかを示しています。

ページが読み込まwindow.ClientSideValidations.selectors.validate_inputsれたら、上書きする必要があります。window.ClientSideValidations.selectors.inputsハッシュに非表示要素の検証を含めることに関しては、要素が表示された状態でページをロードし、すぐにを実行することをお勧めします$('#id_of_hidden_element').attr('type', 'hidden')

または、入力要素を作成し、CSSスタイルシートで使用して非表示にすることもできますtype='text'opacity:0これには、フォーカス可能にするなど、他の副作用があることに注意してください。

于 2014-06-06T18:27:55.190 に答える
0

'id'または'class'を追加して検証するのがより良い方法だと思います

<input type="hidden" id="validate_me">

その場合、セレクターは次のようになります。

':input:enabled:visible[data-validate], #validate_me'

于 2017-09-06T06:21:41.470 に答える