一个实例 ---灵活使用jquery选择器实现input一个key,多个value 。 用ajax传递对象到后台控制器

标题可能不是很清晰,我们看实例:

 

 

简单来说就是需要实现sku的功能。。。一件商品可以有多个属性, 一个属性可以有多个值  。 最后以json格式存到数据库

 

难点一: 如何实现input输入框的弹性使用

  

                        <div class="formControls col-xs-8 col-sm-9">
                            <input type="text" class="input-text sku_attribute_input"  >
                        
                            <a href="javascript:void(0);" onclick="addinput(this)">+增加选项</a>
                        </div>

初始化是一个input,input下面有个a菜单,每次点击,触发jquery, 在a菜单之前增加一个input

    function addinput(obj){
        var html = '<input type="text" class="input-text"  id="" name="name">';
        $(obj).before(html);
    }

 

 

 

难点二: 如何获取input的值

一个属性旁边都有一个复选框,我们用强大的jquery得到($('input:checkbox[class=check_sku_attribute]:checked'))所有勾选的复选框,

然后遍历它们,得到属性名($(this).parent().text())  和   所有属性值集合($(this).parent().next().children())

 

考虑到,一个属性对应多个值 ,应该使用js对象来存储(之前使用数组,浪费了很多事件,原来js数组不能自定义索引)

 

        $('input:checkbox[class=check_sku_attribute]:checked').each(function(){
            
                var name = $(this).parent().text();

                var sku = new Array();
                //遍历字节点
                $(this).parent().next().children().each(function(){
                    if($.trim($(this).val())!=''){
                        sku.push($(this).val());
                    }
                });

                if(sku.length!==0){
                    sku_attrubute[name] = sku;
                }
                
        });

        console.log(sku_attrubute);

 

之后用$.post 传输这个对象即可,over

         $.post("{:url('product/product_attribute_addcl')}",{id:id,attribute:attrubute,sku_attrubute:sku_attrubute},function(data){

             if(data.ok=='1'){
                 alert(data.message);
                  parent.location.reload();  
             }else{
                 alert(data.message);
             }
         },'json');

 

posted @ 2018-09-07 20:06  cl94  阅读(1258)  评论(0编辑  收藏  举报