1. 程式人生 > >幾個有用的jquery表單函式

幾個有用的jquery表單函式

//將JSON字串的值回填回表單
function loadData(obj) {
        /* var obj = eval("("+jsonStr+")"); */
        var key, value, tagName, type, arr;
        for (x in obj) {
            key = x;
            value = obj[x];
            $("[name='" + key + "']").each(function () {
                tagName = $(this)[0].tagName;
                type = $(this).attr('type');
                if (tagName == 'INPUT') {
                    if (type == 'radio') {
                        $(this).attr('checked', $(this).val() == value);
                    } else if (type == 'checkbox') {
                        arr = value.split(',');
                        for (var i = 0; i < arr.length; i++) {
                            if ($(this).val() == arr[i]) {
                                $(this).attr('checked', true);
                                break;
                            }
                        }
                    } else {
                        $(this).val(value);
                    }
                } else if (tagName == 'SELECT' || tagName == 'TEXTAREA') {
                    $(this).val(value);
                }

            });
        }
    }
//獲取表單中所有的資料
//注意:此方法返回的是 JSON 物件而非 JSON 字串。
    function getFormJson(id) {
        var test = $("#" + id).serializeArray();                                //serializeArray() 方法通過序列化表單值來建立物件陣列(名稱和值)。
        var dataStr = "{";
        for (var i = 0; i < test.length; i++) {
            var nameT = test[i].name;
            var valueT = test[i].value;
            dataStr = dataStr + "\"" + nameT + "\":\"" + valueT.trim() + "\",";  //trim()方法用來去除空格
        }
        /*獲取複選框的值,一般複選框只有一個時,我們在選中和未選中時都要傳一個值。選中時,上面的方法會獲取到,但是未選中時,這裡可以定義你要傳的值,我這裡傳的值為字串 '0' ,當然你也可以定義其他的值*/
        $("#" + id + " input[type='checkbox']").each(function () {
            if (!$(this).is(':checked')) {                                        //這裡判斷複選框如果未被選中的話執行下一步
                dataStr = dataStr + "\"" + $(this).attr('name') + "\":\"0\",";
            }
        });
        dataStr = dataStr.substring(0, dataStr.length - 1);                   //去掉最後一個屬性的逗號
        dataStr = dataStr + "}";
        //var dataJson = JSON.parse(dataStr);                                   //parse()方法把dataStr物件轉成json資料
        //return dataJson;
        return dataStr;
    }
//獲取位址列中引數的值
function getUrlParam(name) {
        var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)"); //構造一個含有目標引數的正則表示式物件
        var r = window.location.search.substr(1).match(reg);  //匹配目標引數
        if (r != null) return unescape(r[2]); return null; //返回引數值
    }