jquery mobile Checkbox動態添加刷新及事件綁定


jquery mobile Checkbox動態添加刷新及事件綁定

在微信項目中,涉及到一個多選功能。數據來自后台數據庫,需要動態加載。

項目結構:微信api+web app。使用jquery mobile框架和jquery mobile ui.

ui我使用的是扁平化樣式,大家可以這里查看。[jquery mobile扁平化設計樣式--Jquery mobile Flat UI介紹]

本來想做這個效果的,可惜沒有時間研究出來。

jquery listview checkbox 效果

先將就用了這個效果:

jquery listview checkbox 效果

思路:

  1. Ajax(使用的是Webmethod)獲取數據庫的數據,組成集合返回給js

  2. jquery遍歷數據,動態綁定到ui。多選控件首選:checkboxs

  3. 每個checkbox動態綁定點擊事件,點擊后保存到js數組中。

  4. 最后統一Ajax提交js數組中的數據到服務端

 

1)、數據獲取:本來想采用的是ajaxpro.dll,雖然比較老,但是挺好用,尤其可以返回c#實體,這點很好。但是和其他dll有點沖突,

就換到webmethod了。

復制代碼
 [System.Web.Services.WebMethod] 
    public static string GetSqList(int cityid)
    {
        StringBuilder sb = new StringBuilder();
        Kaitone.UI.BLL.Mobile.Mobile bllm = new Kaitone.UI.BLL.Mobile.Mobile();
        Kaitone.UI.BLL.Client.Client bllclient = new Kaitone.UI.BLL.Client.Client();
        List<Kaitone.Model.Client.ClientData> list = bllm.GetClientDataByCityId(cityid);
     string data= Newtonsoft.Json.JsonConvert.SerializeObject(list);
       
     return data;
    }
復制代碼

這里使用了Newtonsoft.Json json序列化工具。參考這里:

[jquery+asp.net 調用百度geocoder手機瀏覽器定位--Api介紹及Html定位方法]

2)、html5代碼:

 

   <fieldset data-role="controlgroup" data-theme="f" id="fdsqList">  
                </fieldset>

 

3)、js獲取數據:

 

復制代碼
function GetSQ() {
    try {
        if (ud == "undefined" || ud == null) {
            ud = "abc";
        } 
         PageMethods.GetSqList(cityid, CallBack);  //默認獲取數據
    }
    catch (E){ 
    }
}
//選擇城市
復制代碼

 

回調函數進行綁定:

 

  View Code

function CallBack(res) {
if (res != null) {
var html = ""; var data = eval(res);
$.each(data, function (key, val) {
var _inexistence = $.inArray(val.Id, consqlist)
if (_inexistence >= 0) {
html = html + " <input checked=\"true\" type=\"checkbox\" name=\"" + val.Name + "\" id=\"" + val.Id + "\" class=\"custom\" />";
html = html + " <h3><label for=\"" + val.Id + "\">" + val.Name + val.Address + "</label></h3>";
}
else {

html = html + " <input type=\"checkbox\" name=\"" + val.Name + "\" id=\"" + val.Id + "\" class=\"custom\" />";
html = html + " <label for=\"" + val.Id + "\"><h3>" + val.Name + val.Address + "</h3></label>";

}
});
$('#fdsqList').html(html);
$("#fdsqList").trigger("create");
$.each(data, function (key, val) {
$('#' + val.Id).bind('click', function (e, u) {
ConfigSq(e.target.id * 1, e.target.Name);
});
});
}

 

注意:

列表創建好了之后,使用html添加checkboxlist,然后調用  $("#fdsqList").trigger("create"); 進行刷新。不然沒有樣式。 

<label for="checkbox-1"> I agree </label>:for需要設置checkbox的對應ID

 

綁定點擊事件:

1
  
1
ConfigSq是我進行存放數據的數組。e.target是點擊事件的控件,就是我要判斷的checkbox。

 

 
 $.each(data, function (key, val) {
                $('#' + val.Id).bind('click', function (e, u) {         
            ConfigSq(e.target.id * 1, e.target.Name);
            });
 

 

這樣數據展示就完成了。剩下的就是提交數據到服務端了。

我是直接傳遞數據給C#即可。微軟做的東西就是簡單。

其他補充知識:

  View Code

如果動態增加一個checkbox,用這個方式:

$checked_emp.appendTo($msg);
$checked_emp.trigger('create');
$msg.trigger('create');//刷新
2.checkbox事件:
1、disable(禁用)
示例:

//禁用
$("#disable_checkbox").bind('click',function(){
$("#major_eng").checkboxradio("disable");
});
2、enable(啟用)
示例:

//啟用
$("#enable_checkbox").bind('click',function(){
$("#major_eng").checkboxradio("enable");
});
3、checked(選中)
示例:

//選中
$("#checked_checkbox").bind('click',function(){
$("#major_eng").attr("checked",true).checkboxradio("refresh");
});
4、unchecked(不選中)
示例:

//不選中
$("#unchecked_checkbox").bind('click',function(){
$("#major_eng").attr("checked",false).checkboxradio("refresh");
});

 

 

 

 

 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM