0

几天前我开始使用 jQuery,虽然我找到了有关如何解决我遇到的任何问题的信息(或者至少通过一些变通方法让它工作),但我似乎被困在当前问题上:

我有一个具有可变数量字段的表单 - 字段数量可能随时根据用户输入而变化,我使用 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});    
   });

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

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

4

1 回答 1

0

好吧,你可以试试这个:

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

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

于 2012-09-06T19:45:59.457 回答