在修改一个前台表单提交逻辑时,为了不动以前的代码(代码和屎一样),就想着在提交数据时过滤掉form表单中指定的name属性和值,由于表单直接使用jquery中的serialize()方法来获取的form表单的数据,所以就要对 serialize() 方法获取的数据进行处理!

jQuery去掉 serialize() 方法中指定的name值

自定义一个js函数,来去掉 serialize() 数据中指定的name值

jq代码:

/**
 * 
 * @param formdata serialize()获取的数据
 * @param name 要排除掉的name属性
 * @return reslut 类似 serialize() 获取数据格式的数据
 * @host http://www.feiniaomy.com
 */
function undatakey(formdata,name)
{
    result = '';
    for(var i in formdata.split("&")){
        var row = formdata.split("&")[i];
        var key = row.split("=")[0];
        var value = row.split("=")[1];
        if(key != name){
            result = result + row + "&";
        }
    }
    
    return reslut;
}

函数调用:

formdata = undatakey($('#form').serialize(),'name');

JQ 修改 serialize() 方法中的某个值

既然我们可以去掉 serialize() 数据中的某个name属性和值,也可以对某个name属性的值进行修改,可以参考下面的代码!

JQ代码:

/**
 * 
 * @param formdata serialize()获取的数据
 * @param name 要修改name属性
 * @param value 新的属性值
 * @return reslut 类似 serialize() 获取数据格式的数据
 * @host http://www.feiniaomy.com
 */
function editdatakey(formdata,name,value)
{
    result = '';
    for(var i in formdata.split("&")){
        var row = formdata.split("&")[i];
        var key = row.split("=")[0];
        var value = row.split("=")[1];
        if(key == name){
            result = key + '=' + value + '&';
        }else{
            result = result + row + "&";
        }
    }
    
    return reslut;
}