0

動的フォームで作成された画像のアップロードがあります。アップロードされたファイルが実際の画像であることを検証し、目立たないようにしようとしています。.rules() 設定と accept プロパティの使用について読みましたが、フィールド名を入力する必要があります (http://docs.jquery.com/Plugins/Validation/Methods/accept)。フォームは動的であるため、フィールド名はわかりません。アップロード入力を生成するビューは次のようになります。

 <input type="file" size="20" name="@(Model.FormItem.Id + "-image")" id="@(Model.FormItem.Id + "-image")" />

したがって、すべてのファイル入力には「-image」サフィックスが付いています。特定のフィールド名を使用する代わりに、バリデータ ルールに jquery セレクターを使用してルールを追加する方法はありますか??

編集問題が何であるかをうまく説明していないことは明らかです。おそらく、解決策はとてもシンプルで、どういうわけか見逃してしまいました。私は jQuery セレクターの使用方法を知っていますが、私が見たrules構文の例から、ルールに静的フィールド名を指定する必要があります。静的フィールド名の代わりに検証ルールをセレクターに割り当てるにはどうすればよいですか??

だから今、これは私が持っているものです:

 var validatorData = $('#items-form').data('validator');

        $.extend(validatorData.settings, {
            rules: {
                static_field_name: { accept: "jpg|png" }
            },
            messages: {
                static_field_name_message: "The file must be an image."
            }
        });

static_field_name適切なセレクターに置き換えても、(明らかに) 機能しません$('input[name$="-image"]')。では、これを行うにはどうすればよいですか?

4

3 に答える 3

1

私は次のようにこれを行う方法を見つけました.addClassRules()

$.validator.addClassRules("image-upload", {
       accept: "jpg|png|gif"
});

次に、クラスimage-uploadを入力に適用します。ただし、目立たないように機能させるには、ルールをリファクタリングしてカスタムメッセージを取得する必要がありました(http://docs.jquery.com/Plugins/Validation/Reference#Refactoring_rules):

$.validator.addMethod("acceptImageTypes", $.validator.methods.accept,
  "Selected File must be an image.");

        $.validator.addClassRules("image-upload", {
            acceptImageTypes: "jpg|png|gif"
        });

次に、マークアップを次のように変更します。

<label>Image</label>
<input type="file" size="20" data-val="true" class="image-upload" name="@(Model.FormItem.Id + "-image")" id="@(Model.FormItem.Id + "-image")" />
<span class="field-validation-valid" data-valmsg-for="@(Model.FormItem.Id + "-image")" data-valmsg-replace="true">File must be an image.</span>
于 2012-11-07T17:42:20.867 に答える
0

これを解決するには、次の 2 つの方法が考えられます。

1) jQuery の .children() または $("#parent input:first") または $("input[type=file]:last") セレクターを使用して、入力に静的な名前が必要ないようにします。

2) 指定された動的な名前に何らかのパターンがある場合は、jQuery セレクターに正規表現を使用します。a
) jquery の方法: http://api.jquery.com/attribute-ends-with-selector/
b) または完全正規表現の方法: http://james.padolsey.com/javascript/regex-selector-for-jquery/

それが難しい部分です。その後、通常どおりにルールを追加できます。

于 2012-11-06T23:01:42.043 に答える