jQuery - 从动态形式中获取多个函数的变量

时间:2012-09-06 19:38:43

标签: php jquery ajax

我几天前开始使用jQuery,虽然我找到了解决我遇到的任何问题的信息(或者至少通过一些解决方法让它工作),但我似乎仍然坚持当前的问题:< / p>

我有一个具有可变数量字段的表单 - 字段数可能会根据用户输入在任何时候发生变化,我使用AJAX实现了这一点;由于我想保留每次重新生成表单时输入的信息,我会从表单字段发布数据,并在每次更改字段数时使用它重新填充新生成的字段;这一切都有效(虽然我知道我做的不是正确的方式,更多的是它)。

我需要做的是使用表单字段中的值进行另一个AJAX调用,以在页面上生成另一个表;我使用以下代码获取第一个AJAX调用的字段值,它由php生成,从jq_calc11到jq_calc99(取决于字段数)。我知道这可能不是正确的方式,但我无法弄清楚如何使用jQuery发布二维数组。

$('#ts_addfields').change(function()
{   
 var comp_select=$('#ts_addfields').val();
var jq_calc11=$('#tb_calc11').val(); 
 var jq_calc21=$('#tb_calc21').val(); 
 var jq_calc31=$('#tb_calc31').val(); 
 var jq_calc41=$('#tb_calc41').val(); 
 var jq_calc51=$('#tb_calc51').val(); 
 var jq_calc61=$('#tb_calc61').val(); 
 var jq_calc71=$('#tb_calc71').val(); 
 var jq_calc81=$('#tb_calc81').val(); 
 $('#calculator_input').load('/elements/AJAX-addfields.php',{addFields: comp_select, pCalc11:jq_calc11, pCalc21:jq_calc21, pCalc31:jq_calc31, pCalc41:jq_calc41, pCalc51:jq_calc51, pCalc61:jq_calc61, pCalc71:jq_calc71, pCalc81:jq_calc81});    
   });

我现在的问题是,如何针对不同的AJAX调用重用这些变量的值?我不认为通过php为另一个函数生成另一个潜在的99行是一个好主意,所以我研究了将这些值放在单独的函数中的可能性,并从$('#ts_addfields').change(function()或其他内部调用它功能。 我已经尝试了以下各种变体,但我找不到如何运行读取变量的函数的方法;

jQuery.fn.calcVars = function(){
 var jq_calc11=$('#tb_calc11').val(); 
 var jq_calc21=$('#tb_calc21').val(); 
 var jq_calc31=$('#tb_calc31').val(); 
 var jq_calc41=$('#tb_calc41').val(); 
 var jq_calc51=$('#tb_calc51').val(); 
 var jq_calc61=$('#tb_calc61').val(); 
 var jq_calc71=$('#tb_calc71').val(); 
 var jq_calc81=$('#tb_calc81').val(); 
 };

$('#ts_addfields').change(function()
{   
 var comp_select=$('#ts_addfields').val();
 $(this).calcVars();
$('#calculator_input').load('/elements/AJAX-addfields.php',{addFields: comp_select, pCalc11:jq_calc11, pCalc21:jq_calc21, pCalc31:jq_calc31, pCalc41:jq_calc41, pCalc51:jq_calc51, pCalc61:jq_calc61, pCalc71:jq_calc71, pCalc81:jq_calc81});    
   });

我尝试过的任何代码都会在firebug上返回“jq_calc * xx *”未定义的错误。

有人能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

嗯,你可以试试这个:

var str = $("form").serialize();

http://api.jquery.com/serialize/