0

私はかなり奇妙な問題を抱えています。検証メッセージは、ボタンのクリックをダブルクリックしたときにのみトリガーされます。Bootstrap multiselect と jQuery プラグインには既知の問題がいくつかあると思います。

いくつかの回避策を提案してください。

JSフィドル

これがコードです。

<link href="../../Content/bootstrap.min.css" rel="stylesheet" type="text/css" />
<link href="../../Content/bootstrap-multiselect.css" rel="stylesheet" type="text/css" />
<script src="../../Scripts/jquery-2.1.1.min.js" type="text/javascript"></script>
<script src="../../Scripts/bootstrap.min.js" type="text/javascript"></script>
<script src="../../Scripts/jquery.validate.min.js" type="text/javascript"></script>
<script src="../../Scripts/bootstrap-multiselect.js" type="text/javascript"></script>
<script src="../../Scripts/jquery-migrate-1.2.1.min.js" type="text/javascript"></script>

 <form id="myform" action="" method="post">

 <select id="idselect" name="idselect" class="multiselect" multiple="multiple">
     <option value="1">A</option>
     <option value="2">B</option>
     <option value="3">C</option>
 </select>

 <input id="test" type="submit" name="submit" value="Submit" />

 </form>

jQuery

<script type="text/javascript">

    $(document).ready(function () { 
        $('.multiselect').multiselect();


        $("#myform").validate({
            rules: {
                idselect: {
                    required: true
                }
            },
            messages: {
                idselect: {
                    required: "Select atleast one"
                }
            }   
        });

        $('#test').click(function () {
            $("#idselect").valid(); // when i do this based on a suggestion from my previous question, i can at least make it work with a double click. else it wont just work.

        });

    });  
</script>

ブートストラップ環境をフィドルにする方法がわかりません。質問をより明確にする方法を教えてください。問題は単純です。ダブルクリックすると検証メッセージが表示されます。それ以外の場合は表示されません。正常に動作するテキストボックスがあります。問題はmultiselect

4

1 に答える 1

2

複数選択プラグインは元selectの adisplay:noneを提供し、jQuery Validate プラグインはデフォルトで非表示の要素をすべて無視するため、その機能を無効にする必要があります。

ignorejQuery Validate にオプションを追加しただけで[]、パラメーターはこのプラグインに何も無視しないように指示します。

$("myform").validate({
    // rules & options
    ignore: [],
    ....

また、前の質問と現在の jsFiddle に従って、ボタンのハンドラーではなく、のchangeイベント ハンドラーを引き続き使用します。 (前に説明したように、アイテムを選択しても検証が開始されないというプラグインの問題があるように見えるため、これが必要です。)selectclick

$("#idselect").on("change", function() {
    $(this).valid();
});

デモ: http://jsfiddle.net/bdw1nv9z/8/

于 2014-09-10T13:58:00.447 に答える