jQuery的查找與過濾應用&json

輸入值後,用jQuery獲取表單的JSON字符串,key和value分別對應每個輸入的name和相應的value,例如:{“name”:“Michael”,“email”:…}

<form id="test-form" action="#0" onsubmit="return false;">
    <p><label>Name: <input name="name"></label></p>
    <p><label>Email: <input name="email"></label></p>
    <p><label>Password: <input name="password" type="password"></label></p>
    <p>Gender: <label><input name="gender" type="radio" value="m" checked> Male</label> <label><input name="gender" type="radio" value="f"> Female</label></p>
    <p><label>City: <select name="city">
    	<option value="BJ" selected>Beijing</option>
    	<option value="SH">Shanghai</option>
    	<option value="CD">Chengdu</option>
    	<option value="XM">Xiamen</option>
    </select></label></p>
    <p><button type="submit">Submit</button></p>
</form>

解決代碼1:

<script type="text/javascript">
    json = {};//建立空數組
    json.name = $('input[name=name]')[0].value;//獲取到Name一欄的value
    json.email = $('input[name=email]')[0].value;//獲取到Email一欄的value
    json.password = $('input[name=password]')[0].value;//獲取到Password一欄的value
    json.gender = $('input[name=gender]').filter(function () {//獲取到Gender一欄的value
        return this.checked;//獲取被選擇的值
    })[0].value === 'm' ? 'Male' : 'Female';//對被選擇的值進行區分
    json.city = $('select[name=city] option').filter(function () {//獲取到City一欄
        return this.selected;//獲取被選擇的值
    })[0].innerText;//選擇其中的值(非value)
    json = JSON.stringify(json, null, ' ');//json的序列化
    alert(json);
</script>

解決代碼2:

<script>
    var json={};//建立空數組
    $('#test-form :input').not('button').filter(function(){//選擇表單id="test-form"下非提交按鈕的所有節點
        return this.type!=='radio'||this.checked;//首先選擇所有輸入節點,其次在選擇非輸入節點,由於兩者性質不同,選擇一方則會忽略另一方
    }).map(function(){
        return json[this.name]=this.value;//map函數,對節點下標name的賦值value
    }).get();//數組字符串化
    json=JSON.stringify(json,null, ' ');//json序列化
    alert(json);
</script>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章