4

Rails アプリで Foundation を使用しており、フォーム内のテキスト フィールドの長さを検証する方法を探しています。 )。

docsで説明されているように、Foundation's abide を使用して、カスタムの名前付きパターンを作成しようとしました。

以下は、application.jsFoundation の初期化時のカスタム パターンを含むファイルの内容です。

$(function(){ 
  $(document)
    .foundation()
    .foundation('abide', {
      patterns: {
        short_field: /^.{,40}$/,
        long_field: /^.{,72}$/
      }
    }); 
});

ビュー内のフォーム コードは次のとおりです。

<form data-abide>
  <div class="long-name-field">
    <input type="text" pattern="long_field" placeholder="Long Field">
    <small class="error">Too long.</small>
  </div>
  <div class="short-name-field">
    <input type="text" pattern="short_field" placeholder="Short Field">
    <small class="error">Too long.</small>
  </div>
</form>

問題は、フォーム ページを読み込むと、すべてのフィールドが常にエラー メッセージを表示することです。フィールドが空であるか、文字数制限に満たないか、文字数制限を超えているかにかかわらずです。

abbid を使って同様のことを成功させた人はいますか (または、カスタムの名前付きパターンを使用しないより良い方法を知っていますか)?

乾杯。

4

2 に答える 2

5

私はついにそれを機能させることができました!

問題は/^.{,40}$/、有効な正規表現構文ではないことでした/^.{0,40}$/。明示的に使用する必要があります。

/.{5,}/下限のみを課すために使用できる構文と間違えています。

于 2013-08-30T14:20:58.257 に答える
0

Rails 4 アプリで JavaScript を順守させることができなかったので、次のように正規表現を属性として直接追加しました。

<%= text_area_tag 'answer', @current_answer,
        :placeholder => 'required', :required => '', :pattern => '^(.){0,1000}$' %>

最小長のみを検証するために、次を使用します。

<%= text_area_tag 'answer', @current_answer,
        :placeholder => 'required', :required => '', :pattern => '^(.){100,}$' %>
于 2016-06-06T23:14:29.420 に答える