一个简单的jQuery问题。
我在一个页面上有几个相同的表单(除了它们的名字),每个页面都有一些隐藏的输入。我想通过使用表单名称然后输入名称来引用它们。 (输入名称在我的页面中不是唯一的)
例如:
var xAmt = $('#xForm'+num).('#xAmt');
我真的想将这些值提供给AJAX POST
$.ajax({
url: "X.asp",
cache: false,
type: "POST",
data: "XID=xID&xNumber=xNum&xAmt=xAmt",
...
如果我能更好地获得AJAX调用中的值。
答案 0 :(得分:2)
function queryX( args ) {
var queryString = [ "XID=", args.XID, "&xNumber=", args.xNumber, "&xAmt=", args.xAmt ].join("");
$.ajax({
url: "X.asp",
cache: false,
type: "POST",
data: queryString,
success : function( data ) {
return data;
}
});
}
var myReturnData = queryX({
XID : $("input[name='XID']").val(),
xNumber : $("input[name='xNumber']").val(),
xAmt : $("input[name='xAmt']").val()
});
修改强>
这使您可以获得最大的灵活性,如果只有输入值会改变(但查询字符串变量不会改变),那么您可以传入任何您想要的值作为值。
答案 1 :(得分:1)
您希望来自jQuery forms plugin的formSerialize()
(甚至是ajaxSubmit()
)。
答案 2 :(得分:1)
此处已经回答了这种灵活的方法,但您也可以使用当前的代码。 (请原谅我,如果这对你所寻找的东西来说太基础了。)
使用CSS后代选择器(空格)从唯一表单名称向下钻取:
var xAmt = $('#xForm'+num+ ' #xAmt').val();
重复你需要的每个值并像你正在做的那样调用$ .ajax。
答案 3 :(得分:0)
<强>编辑:强>
您需要先将它们全部选中,然后才能使用它们。
要只访问xForm#元素,你可以像这样做一个选择器(你应该检查语法,我没有运行它,这只是一个例子):
$('form input[name*='xAmt'] ').each(function(){ alert( $(this).val() ); alert( $(this).parent().attr('name') + $(this).parent().attr('id') ); });
表单输入[name * ='xAmt']表示选择表单内包含术语xAmt的任何元素。你也可以做开头,结束等等。见下面的链接。
在每个循环中,您可以以$(this)的形式访问每个循环。你可以将它的父表单作为$(this).parent()访问,这样你就可以知道输入的形式。
您可以在循环中构建数据,或者使用它们执行其他操作,然后发布帖子。
请参阅:
http://docs.jquery.com/Selectors/attributeContains#attributevalue
http://docs.jquery.com/Selectors