jquery現実マルチステートコントロール(status&power(2,0)=power(2,0)
13643 ワード
データベース表の設計の時、とても多くの状態の需要があって、例えば招聘の職位は同時に武漢、広州、上海に発表する必要があります
実装方法はいろいろありますが、職階表にint型フィールドを作成して複数の状態を保存することを選択しました.これはいくつかのアルゴリズムに関連しています.武漢と広州の職位のsql文を検索するには、次のようにします.
以下は対応するコントロールです.
実装方法はいろいろありますが、職階表にint型フィールドを作成して複数の状態を保存することを選択しました.これはいくつかのアルゴリズムに関連しています.武漢と広州の職位のsql文を検索するには、次のようにします.
select * from
where 1 = 1
and (status & power(2,3)) = power(2,3) --
and (status & power(2,1)) = power(2,1) --
以下は対応するコントロールです.
<p><input type="text" multi_status=" , , , , " />p>
<p><input type="text" multi_status=" , , , " />p>
<p><input type="text" multi_status=" , , , " />p>
<script type="text/javascript" src="http://120.27.139.230:3000/distadmin/plugins/jQuery/jQuery-2.1.4.min.js">script>
<script type="text/javascript">
var multi_status_count = 0;
$('input[multi_status]').each(function(index, el) {
el = $(el);
var status = el.attr('multi_status').split(',');
var val = el.val();
if (isNaN(parseInt(val, 10))) el.val(val = 0);
for (var a = 0; a < status.length; a++) {
var chkid = 'multi_status_checkbox_' + multi_status_count++;
var chk = $('' + chkid + '"' +
((val & Math.pow(2, a)) == Math.pow(2, a) ? ' checked' : '') +
' onclick=""/> + chkid + '">' + status[a] + '');
el.before(chk);
(function(a) {
$('#' + chkid).click(function() {
el.val(val = parseInt(val, 10) + (this.checked ? 1 : -1) * Math.pow(2, a));
});
})(a);
}
//if (status.length) el.hide();
});
script>