2011-05-12 17 views
2

私はUJSとjqueryを使ってレール3にRubyを使用しています。 AJAXフォームを生成しようとしています。 AJAXであるにもかかわらずフォームが通常のフォームのままであることはわかっているので、remote-data => trueが追加されます。ajaxとレールによるライブ検証3

フォームは、remote-data => trueでオンザフライでチェックされ、次に実行され、ajaxリクエストが実行されます。

今すぐ送信ボタンをクリックした後にライブ検証を実行します。

私が欲しいのは、 - 送信ボタンをクリックすると、すべての評価がクライアント側で実行され、すべてが完璧であれば、フォームを送信します。もし何か過ちがある場合は、フォームを提出しないでください。

アイデア?

+1

これを見てください:http://railscasts.com/episodes/263-client-side-validations imhoの提案よりも優れています。 – iceydee

+0

ありがとう。私はその方法を知っています。しかし、私はsubmitがクリックされたときだけ検証したいと思う。 –

+1

私はその宝石のjavascriptコードを掘り下げ、自分のクライアントサイドコードでそれらを上書きします。バリデーションの部分は本当にいいですし、javascriptの動的な性質を考慮して修正するのに十分なはずです。 – iceydee

答えて

2

私はフィールドが有効な場合、リモートのフォームチェックですべてのフォームを、この をやってみました。 フィールドが有効な場合は、ajaxからtrueを返します。送信する前に、falseを返します。

$('.remote_form').live('ajax:beforeSend', function(event, elements){ 

if(validate_fields(this)) 
{ 
     return true; 
} 
else 
    return false; 
     }); 

注:Validate_fieldsは、検証をチェックするユーザー定義関数です。

1

は、この2つのポストをチェックアウト:

検証プラグインがボックス「をonSubmit」応答の外にあります。

このチュートリアルでは、Ajaxの検証も実装する必要があります。 http://docs.jquery.com/Plugins/Validation http://sleekd.com/tutorials/jquery-validation-in-ruby-on-rails/