2014-07-11 44 views
1

在表單提交中,更改或添加表單值被序列化併發送到服務器的標準或最流行的方式是什麼?我需要在它們發送之前更改/添加它們。在表單提交中更改/添加表單值

我發現了一些解決方案,但他們似乎都只是黑客。例如,這個人再次創造了這些價值,這不是明智的。就我而言,如果可能的話,我不想重新創建它們。

var serial = new Array(); 
var i = 0; 
$('.om input').each(function(){ 
    serial[i++] = $(this).attr('name')[0]+'='+$(this).html()[0]; 
}); 
serial.join('&'); 
+0

最佳例子:http://jsfiddle.net/sxGtM/3/ – Ash

+0

http://stackoverflow.com/a/1186309/3660930 – Ash

+0

@ user972,其中它顯示如何**捕獲**並更改數據? –

回答

0

試試這個,

<html> 
<head> 

<script type="text/javascript" src="http://code.jquery.com/jquery-2.1.1.min.js"></script> 

    <script type="text/javascript"> 
     function submitForm() 
     { 
      var queryParam = $("#myform").serialize(); 
      var inputArr = queryParam.split("&"); 
      var retObj = {}; 
      $.each(inputArr,function(key,value){ 
       retObj[value.split("=")[0]] = value.split("=")[1]; 
      }); 
      retObj.input1 = "newOne"; 
      retObj.newAttr = "newlyAddedValue"; 
      alert(jsObjToQueryStr(retObj)); 
     } 

     function jsObjToQueryStr(jsonObj) 
     { 
      var retStr = ""; 
      $.each(jsonObj,function(key,value){ 
       retStr += key+"="+value+"&"; 
      }); 
      if(retStr.length > 0) 
      { 
       return retStr.substr(0,retStr.length-1); 
      } 
      return retStr; 
     } 

    </script> 
</head> 
<body> 

<form id="myform" > 
    <input type="test" name="input1"/> 
    <input type="test" name="input2"/> 
    <input onclick="submitForm()" type="button" value="submit"/> 
</form> 

</body> 
</html> 
+0

它重新創建數據。 –

+0

所以不是提交,它顯示一個提醒? –

+0

我剛剛看到你如何創建數據並進行修改。您可以通過ajax調用來提交表單 –