2012-04-05 10 views
3

私のセレクトボックスを検証したいのですが、jQuery UIを使用してセレクトボックスのスタイルを変更しているため動作しません。それは見動作しない理由があるようなし:: htmljQuery UI Validation Pluginと組み合わせて選択してください

しかし、どのように私はそれがjQueryのUIの選択ボックスプラグインで動作させることができます

jQueryのUIは、表示上の実際の選択ボックスを設定されていますか?

実用的なソリューションがありますか。 :)

+0

あなたは[SSCCE](HTTPを提供することができますが.org /)?プラグインのattachメソッドは元のselectboxを隠し、display:noneを使用してそれをカスタムのものに置き換えます。代わりに[プラグイン](http://www.bulgaria-web-developers.com/projects/javascript/selectbox/)が提供するセレクタを使用しなければなりません。 – lzdt

+0

こんにちはIzdt、私は本当にJSプログラマーではないので、あなたが何を言っているのか分かりません。あなたが私を助けることを願っていますか?私は今持っているコードでJSFiddleを作った:http://jsfiddle.net/jB5mE/ – Maanstraat

答えて

8

これは、selectMenuselectを隠しているという事実によるものです。デフォルトでは、validateは隠し要素を検証しません。あなたは[]ignoreオプションを設定することで、これを変更することができます。

$(".valid").validate({ 
    meta: "validate", 
    ignore: [], 
    groups: { 
     checks: checkbox_names 
    }, 
    errorPlacement: function(error, element) { 
     if (element.attr("type") == "checkbox") 
      error.insertAfter(element.parent().siblings().last()); 
     else if (element.is("select")) { 
      error.insertAfter(element.next("a.ui-selectmenu")) 
     } 
     else error.insertAfter(element); 
    } 
}); 

あなたがselectMenuしない再検証入力を変え、気づいたよう。あなたはselectMenuchangeイベントを活用して、手動で要素を再検証することでこれを回避することができます

// SELECTBOXES 
$(function() { 
    $('.dataTables_length input, select').not("select.multiple").selectmenu({ 
     style: 'dropdown', 
     transferClasses: true, 
     width: null, 
     change: function() { 
      $(".valid").validate().element(this); 
     } 
    }); 
}); 

例:// sscce:http://jsfiddle.net/8YvSN/

+0

あなたは男、thnxです!しかし、ユーザーがオプションを選択すると、エラーメッセージが表示されなくなります。その方法はありますか? – Maanstraat

+0

@Maanstraat:ええ、更新された答えを確認してください –

+0

あなたの時間のためにアンドリューありがとう。 – Maanstraat

関連する問題