javascript从表单元素处理复选框创建url

时间:2012-05-21 14:51:04

标签: javascript

所以我一直在使用这个通用代码从表单元素

创建一个URL
function submiturl() {
    url="Search.do?call=JS"; 
    var elem = document.getElementById('searchInput').elements;
    for(var i = 0; i < elem.length; i++) {
        url = url + "&" + escape(elem[i].name) + "=" + escape(elem[i].value);
    }
    url = url.substring(0,(url.length-1));
   alert(url);
}

但它没有正确处理复选框 - 如果选中复选框,我只想添加到URL。所以,如果你有这个HTML

<html>
<body>
<form name="searchInput" id ="searchInput">
    <input name="first" type="checkbox" value="123"/>One two three
    <input name="second" type="checkbox" value="456"/>Four five six
    <button type="button" onClick="submiturl();">Submit</button>
</form>
</body>
</html>

它将使用两个复选框的值创建URL,无论它们是否被选中。

那么如何修改我的javascript来检查它是否是一个复选框并被选中?

谢谢!

3 个答案:

答案 0 :(得分:1)

在for-loop中执行此操作:

if (elem[i].type != "checkbox" || elem[i].checked)
    url = url + ...

答案 1 :(得分:0)

是复选框吗?

typeof elem[i].attributes['type'] != 'undefined' &&
elem[i].attributes['type'].value == 'checkbox'

检查了吗?

typeof elem[i].attributes['checked'] != 'undefined' &&
elem[i].attributes['checked'].value == 'checked'

答案 2 :(得分:0)

function submiturl() {
    var url="Search.do?call=JS", 
        els = document.getElementById("searchInput").elements
    ;
    for(var el, i = 0, n = els.length; i < n; i++) {
        el = els[i];
        if (el.checked || el.type !== "checkbox") {
            url += "&" + encodeURIComponent(el.name) + 
                   "=" + encodeURIComponent(el.value)
            ;
        }
    }
    alert(url);
}