在提交表单之前将复选框值组合到字符串中

时间:2013-07-29 23:21:42

标签: javascript forms post

我正在将表单发送到我有限访问权的外部服务器。我有一个表单,其中包含许多用户感兴趣的不同产品的复选框。我需要在一个字符串中发送这些表格,列出他们检查的所有产品。

我知道我需要使用JavaScript来捕获选择并将它们组合成一个变量,然后通过POST将其发送到外部服务器。我对Javascript的经验不是很熟悉。

2 个答案:

答案 0 :(得分:3)

我只是会在提交表单(DEMO)后给你一个关于如何查看选中复选框的提示。

想象一下,你有以下html:

<form id="testForm">
    <input class="checkbox" name="one" type="checkbox">
    <input class="checkbox" name="two" type="checkbox">
    <input class="checkbox" name="three" type="checkbox">
    <input type="hidden" name="checkboxStr" id="checkbox_str">
    <button>Send</button>
</form>

您可以为表单提交添加事件监听器:

var form = document.getElementById('testForm');

try {
    form.addEventListener("submit", submitFn, false);
} catch(e) {
    form.attachEvent("onsubmit", submitFn); //IE8
}

然后你可以获得所有需要的复选框,例如它的类名。 循环通过它们并将已检查的数据添加到一个数组中,稍后您将该数组连接到字符串。

function submitFn(event) {
    event.preventDefault();
    var boxes = document.getElementsByClassName('checkbox');
    var checked = [];
    for(var i=0; boxes[i]; ++i){
      if(boxes[i].checked){
        checked.push(boxes[i].name);
      }
    }

    var checkedStr = checked.join();

    document.getElementById('checkbox_str').value = checkedStr;
    form.submit();

    return false;
}

您现在可以通过ajax发送此字符串,或者您可以添加隐藏的表单字段并将字符串设置为其值并提交不带ajax的表单。

答案 1 :(得分:1)

首先,您需要获取名称值对并将其存储到对象中:

var obj = {}; // this will hold your name value pairs

从那里,您可以使用JSON将数据发送到服务器。 JSON数据在发送到服务器时是字符串形式。

var json_string = JSON.stringify(obj);