我的页面上有一个表单,位于类.class-lesson中。表单本身只包含文本字段和单选按钮。我不知道每个表单中有多少都是PHP,因为它是由PHP动态生成的。表单中的每个新输入都命名为q1,q2,... qn。
我试图获取所有值,无论是否回答,并存储到javascript数组中。到目前为止,这是我的代码:
// get the value of each input field
var numQuestions = $(".class-lesson label").not(".csubmit").length;
// store each answer
for (var i = 0; i < numQuestions; i++) {
// store our variables
var tempAnswer = undefined;
var tempReference = $(":input[name=q"+(i+1)+"]");
// loop through each item
if ( tempReference.attr('type') == 'radio' ) tempAnswer = $(":input[name=q"+(i+1)+"]:checked").val();
else tempAnswer = tempReference.val();
// output / store the item
alert( tempAnswer );
}
我确信必须有一种更简单的方法来做到这一点,但我不知道。这就是我要问的原因。如果我没有:选中,那么它将只获取无线电组的第一个值。
那么,我怎样才能提高效率呢?
答案 0 :(得分:1)
要以序列化形式获得整个<form>
(或任何一组输入),如果正常提交给服务器(不涉及任何JavaScript),请使用.serialize()
,如下所示:
var formData = $(".class-lesson :input").serialize();
//or...
var formData = $("#formID").serialize();
如果您通过AJAX提交,例如,这会使您的代码非常简单,例如:
$.post("test.php", $("#formID").serialize(), function(data) {
alert("Response was: " + data);
});