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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值