-1

jQuery 検証プラグイン ( http://docs.jquery.com/Plugins/Validation/ ) を使用しており、フォームを作成する必要があります。

UPLOAD: <input type="file" name="image"  /><br>
URL: <input type="text" name="images">

これらのフィールドの少なくとも 1 つを入力する必要があるようにするにはどうすればよいclass="required"ですか (つまり )。

4

3 に答える 3

1

あなたが探しているのは、jQuery Validateの依存関係式と呼ばれるものです。あなたのフォームがあなたが示したように見える場合 (つまり、2 つの入力、1 つは という名前imageで、もう 1 つは という名前images)、次のようにすることができます。

$('form').validate({
    rules: {
       image: {
          required: 'input[name="images"]:blank'
       },
       images: {
          required: 'input[name="image"]:blank'
       }
    }
});

したがって、各フォーム フィールドを検証するときに、指定された式をチェックし、true が返された場合は、現在のフォーム フィールドが必要になります。それが偽であれば、そうではありません。

于 2012-08-27T15:27:31.970 に答える
0

私は通常、そのようなものにカスタムメソッドを追加します。このようなことを試してください。

    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
    <script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.min.js"></script>
    <style>
        .error {color: red}
    </style>

    <form id="testForm" enctype="multipart/form-data">

        <input name="image" class="oneof" />
        <br /><input name="images" type="file" class="oneof" />
        <br /><input type="submit" />
    </form>


    <script>
        // using custom methods
        $(document).ready(function(){
            jQuery.validator.addMethod("oneofelementsrequired", function(value, element, param) {
                element = element || false; 
                var $frm=$(element).parents('form:first'),
                    any=false, 
                    $ctrls=$frm.find( param );

                $ctrls.each( function(){
                    any = any || this.value != ''
                });
              return any; 
            }, "Please fill one of this fields");

            jQuery.validator.addClassRules({
                oneof: {oneofelementsrequired: '.oneof'}
            });

            $('#testForm').validate({
                submitHandler: function(){
                    alert('From is Ok');
                    return false;
                }
            });


        });

    </script>

デモ

于 2012-08-25T14:07:50.863 に答える
0

これはうまくいくかもしれません

$(function() {
    $("input").focusout(function (){
        $('input').each(function(){
            $(this).addClass('required');
            if($(this).val()){
                $(this).removeClass('required');
            }
        });
    });
}); 

ここにフィドルがあります:

于 2012-08-25T13:07:50.483 に答える