0

所以我一直在使用这个通用代码从表单元素创建一个 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 以检查它是否是一个复选框并被选中?

谢谢!

4

3 回答 3

1

在你的 for 循环中这样做:

if (elem[i].type != "checkbox" || elem[i].checked)
    url = url + ...
于 2012-05-21T14:54:59.613 回答
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'
于 2012-05-21T14:55:41.400 回答
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);
}
于 2012-05-21T14:57:31.830 回答