これは別の質問へのフォローアップです。まず、通常の選択リストで検証を機能させる必要がありました。(前編はこちらから)
jQuery Validation ロジックを含む選択メニューがあります。私は ASP.NET MVC を使用しているため、いくつかのカスタム属性がありますが、現在は検証を機能させたいだけなので、属性は重要ではありません。
私はなんとかそれを機能させました(実際、私ではなく、Gajotresが解決しました。)
jQuery UI selectmenu プラグインに拡張したいと思います (プラグインはまだ非公式です - jQuery UI の次のバージョンで公式リリースされる予定ですが、ここで見つけることができます: jQuery UI Select Menu (Unofficial)
スタイリングを機能させることができましたが、検証が再び失敗しました。私は自分のコードとフィドルをここに投稿しています。簡潔にするために、ここに掲載されているコード以外にもあることに注意してください。
jsFiddle (プラグインあり)
jsFiddle (プラグインなし [正常に動作])
予想される行動
「デフォルト」オプションが選択メニューで現在選択されている値である間、ユーザーはフォームを送信できてはなりません。
何らかの理由でフィドルを試したくない場合に備えて、関連するすべてのファイルへのリンクを次に示します。
jQuery
- http://code.jquery.com/ui/1.9.2/themes/base/jquery-ui.css
- http://code.jquery.com/ui/1.9.2/jquery-ui.js
jQuery 検証プラグイン
メニューの選択 (分岐)
- http://ciel.github.com/jquery-ui/javascripts/jquery.ui.selectmenu.js
- http://ciel.github.com/jquery-ui/stylesheets/selectmenu.css
Javascript
$(document).ready(function() {
$.validator.addMethod("valueNotEquals", function(value, element, arg){
return arg != value;
}, "");
$("#form1").validate({
rules: {
select_list : {valueNotEquals: $('#select_list').attr('data-val-mustbe-propertyvalue')},
},
messages: {
select_list : { valueNotEquals: $('#select_list').attr('data-val-required') }
},
submitHandler: function(form) {
alert($('#form1').valid());
form.submit();
}
});
$("#select_list").selectmenu();
});
HTML
<form id="form1" action="">
<select id="select_list" name="select_list">
<option value="default">Choose...</option>
<option value="1">1</option>
<option value="2">2</option>
</select>
<input type="submit" id="submit" value="Submit" />
</form>
CSS
body {
font-size: 62.5%;
font-family: "Verdana",sans-serif;
}
fieldset {
border: 0;
}
label, select, .ui-select-menu {
float: left;
margin-right: 10px;
}
select {
width: 200px;
}
.wrap ul.ui-selectmenu-menu-popup li a {
font-weight: bold;
}
選択メニューをテーマにするための追加の CSS は、こちらから入手できる selectmenu.css ファイルにあります。