代码之家  ›  专栏  ›  技术社区  ›  chris

JavaScript表单输入循环帮助

  •  0
  • chris  · 技术社区  · 14 年前

    我有一个表单,目前只解析POST中的第一个输入变量。 我不得不添加多个变量,所以我希望函数能够循环并获取所有输入参数并添加到POST中

    以下是获取名字和值的工作代码。。。。如何让它检查表单并获取所有自定义名称和变量。

    example here

    // dynamically add key/value pair to POST body
    function read_custom_param(){
    var nameEl = document.getElementById("custom_name");
    var valueEl = document.getElementById("custom_value");
    
    // save custom param name and value
    var cust_param_name = nameEl.value;
    var cust_param_value = valueEl.value;
    
    // remove old custom param form elements
    if (valueEl.parentNode && valueEl.parentNode.removeChild){
             valueEl.parentNode.removeChild(valueEl);
    }
    if (nameEl.parentNode && nameEl.parentNode.removeChild){
             nameEl.parentNode.removeChild(nameEl);
    }
    
    // add new custom param form elements
    var el=document.createElement("input");
    el.type="text";
    el.name=cust_param_name;
    el.value=cust_param_value;
    document.getElementById("dcapiform").appendChild(el);
    }
    

    克里斯

    1 回复  |  直到 14 年前
        1
  •  1
  •   Ayyash    14 年前

    无论你想把模棱两可的域名发送到服务器上,这里都是你想要的(你应该考虑一个更聪明的方法,可以在服务器端进行br处理)

    var elems = document.getElementsByTagName("input");
    var arr = [];
    for (var i = 0; i<elems.length; i++){
        if (elems[i].type != "text") continue;
        if (elems[i].name.indexOf("custom_name") < 0) continue;
        var index = parseInt(elems[i].name.substring(11)); // you should rename custom_name to custom_name1, and so for custom_value
    
        arr[arr.length] = elems[i].value+"=" + elems["custom_value"+index].value;
    }
    document.forms[0]["passedITems"] = arr.join(",");
    docmentt.forms[0].submit();
    

    在服务器端,读取“passedItems”,按“,”拆分,得到“name=value”数组,再按“=”拆分,得到name,and value子数组