JQuery. tokenInput 解析-02 关于过滤select数据

    上节说道tokenInput的基本使用,特别关注了onsend()方法,这里我需要说的是如何过滤select,也就是如果token_A 选择了 aaa选项,如果在token_B中过滤该选项,使搜索不到该结果,避免相同。这里是两个token不能相同item,也包括同一个token,不能同一个item。

     这里我们就要使用到onSend方法,dom操作获取需要过滤的token,获得已经选的的item的id,以json格式,在后台处理,过滤搜索结果。

    这样处理,就可以避免再次Dom处理不能相同值的问题,因为第二次,直接过滤了结果,搜索不到已经选中的item。

      代码:

      

JS 
$("#update_"+role+"_id_"+id_index).tokenInput("/test/tokenData.json", {
          prePopulate:[
                    {id: id_index, name: name}
                  ],
          preventDuplicates: true,
          theme: "facebook",
          onSend: function(param1) {
            var filterValueJson = {};
            var index = 0;
            $("#"+role+"_table").children("tbody").children("tr").each(function(){
              if($(this).children("th").length > 0){
                return true;
              }
              if($(this).children().first().children("span").length > 0){
                filterValueJson["id_"+index]=$(this).children().first().children().first().text().trim()
              }else if($(this).children().first().children().last().val().trim()!="") {    
                filterValueJson["id_"+index]=$(this).children().first().children().last().val().trim()           
              }
              index++;
            }) 
            param1.data.filter = JSON.stringify(filterValueJson)
          }
        });       
      }       
Controllers
  def show    
       select_token_data       
    end

  def  select_token_data       
    var=  "%#{params[:q]}%"
    filterValue = JSON.parse(params[:filter])
    filterIds = []
    filterValue.each do |title|
      if title[1].to_i.nil?
        next
      end
      filterIds[title[0].split("_")[1].to_i] = title[1].to_i
      
    end
    filterIds = filterIds.blank?? "" : filterIds
    @tokenData= TestData.select("id, name").where("id not in(?)", params[:q].to_i, var,filterIds).order("name") 
    respond_to do |format|
      format.html
      format.json { render :json=>@tokenData.map(&:attributes)}
    end 
    
  end

以上例子中,token是使用在table中,每条记录,都会有tokeninput操作,所以对table进行了dom操作,这里可以灵活使用,获取需要过滤的tokeninput值,使用json方法,在后台进行过滤。


QQ:346600357

邮箱:oldlock1988@163.com



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值