1. 程式人生 > >jquery form表單序列化注意事項

jquery form表單序列化注意事項

我們先來講講表單中 中readonly和disabled的區別:

readonly只對input和textarea有效, 但是disabled對於所以的表單元素都是有效的,包括radio,checkbox等
如果表單中使用的disabled那麼使用者是不能選擇的,也就是說這個文字框是無法獲取到焦點的,而readonly是可以獲取到焦點,只是不能修改,為只讀

最重要的一點,
在傳送表單的時候,表單的控制元件屬性沒有name屬性該欄位不會發送,也不會形成鍵值對;表單控制元件屬性是disabeld,則該欄位不會發送,也不會形成鍵值對

測試1,沒有設定name屬性:

<body>
<form id="form1"> <select> <option value="0">葫蘆娃測試0</option> <option value="1">葫蘆娃測試1</option> <option value="2">葫蘆娃測試2</option> </select> <input type="button" id
="btnSubmit" value="提交" name="btnSubmit" />
</form> <script type="text/javascript"> $(document).ready(function () { $("#btnSubmit").click(function () { console.log("serialize:"); console.log($("#form1").serialize()); console.log("serializeArray:"
); console.log($("#form1").serializeArray()); }); });
</script> </body>

輸出結果如下:

serialize:

 serializeArray:
[]length: 
__proto__: Array(0)

這裡寫圖片描述

測試2,設定name屬性:

<body>
    <form id="form1">
            <select name="selectHuLuWa">
                <option value="0">葫蘆娃測試0</option>
                <option value="1">葫蘆娃測試1</option>
                <option value="2">葫蘆娃測試2</option>
            </select>
            <input type="button" id="btnSubmit" value="提交" name="btnSubmit" />
    </form>
    <script type="text/javascript">
        $(document).ready(function () {
            $("#btnSubmit").click(function () {
                console.log("serialize:");
                console.log($("#form1").serialize());
                console.log("serializeArray:");
                console.log($("#form1").serializeArray());
            });
        });
    </script>
</body>

輸出結果如下:

serialize:
 selectHuLuWa=0
 serializeArray:
 [{…}]
{name: "selectHuLuWa", value: "0"}
length:1
__proto__:Array(0)

這裡寫圖片描述

測試2,設定readoly屬性:

<body>
    <form id="form1">
            <select name="selectHuLuWa" readonly="readonly">
                <option value="0">葫蘆娃測試0</option>
                <option value="1">葫蘆娃測試1</option>
                <option value="2">葫蘆娃測試2</option>
            </select>
            <input type="button" id="btnSubmit" value="提交" name="btnSubmit" />
    </form>
    <script type="text/javascript">
        $(document).ready(function () {
            $("#btnSubmit").click(function () {
                console.log("serialize:");
                console.log($("#form1").serialize());
                console.log("serializeArray:");
                console.log($("#form1").serializeArray());
            });
        });
    </script>
</body>

測試結果如下:
這裡寫圖片描述

測試4,設定disabled屬性

<body>
    <form id="form1">
            <select name="selectHuLuWa"  disabled="disabled">
                <option value="0">葫蘆娃測試0</option>
                <option value="1">葫蘆娃測試1</option>
                <option value="2">葫蘆娃測試2</option>
            </select>
            <input type="button" id="btnSubmit" value="提交" name="btnSubmit" />
    </form>
    <script type="text/javascript">
        $(document).ready(function () {
            $("#btnSubmit").click(function () {
                console.log("serialize:");
                console.log($("#form1").serialize());
                console.log("serializeArray:");
                console.log($("#form1").serializeArray());
            });
        });
    </script>
</body>

測試結果如下:
這裡寫圖片描述

由此可證表單控制元件沒有name屬性,設定disabled屬性是無法進行序列化的。
**如果需要把disabled的進行序列化的方法為:
在序列化之前移除disabled屬性,序列化完成後,再新增上即可。**