我在使用jQuery的插件Facebox处理表单中的某些数据时遇到了一些麻烦。 我想要完成的是基本上将所选复选框的数量值放到一个数组中,并在我的弹出窗口中使用它来处理它。 我在表格页面上有类似的内容:
form.html
<input type="checkbox" name="equip" value="<?php echo $equip_id; ?>" />
<input type="checkbox" name="equip" value="<?php echo $equip_id; ?>" />
<input type="checkbox" name="equip" value="<?php echo $equip_id; ?>" />
<input type="button" name="replace" onClick="replace_equip()" />
还有更多复选框,但我认为这些足以开始使用。
这是 replace_equip()
function replace_equip() {
var nArr = new Array();
$("input:checkbox[name=equip]:checked").each(function() {
nArr.push($(this).val());
$.facebox(function() {
$.ajax({
data: { name : nArr },
error: function() {
$.facebox("err");
},
success: function(data) {
$.facebox(data);
},
type: "post",
url: "test.php"
});
});
});
}
我正在尝试将选中的复选框保存到数组中,我可以将其用于test.php中的PHP处理。
我只是开始使用jquery和javascript,所以原谅你可能发现的任何怪物错误!
答案 0 :(得分:0)
要开始使用,您的代码会遇到一些风格问题。首先,您应该选择不对数组,对象等使用new
语法。相反,请使用Array
之类的内容声明var array = [];
。其次,你使用内联onClick
,如果你已经使用了jQuery,应该避免使用内联$('input[name="replace"]').on('click', function() {...});
。相反,请使用camelCase
之类的内容。您还应考虑将vars
与您的功能一起使用,如果您喜欢下划线,请将其与$('input[name="replace"]').on('click', function() {
replaceEquip();
});
function replaceEquip() {
var array = [];
$("input:checkbox[name=equip]:checked").each(function() {
array.push($(this).val());
});
$.facebox(function() {
$.ajax({
type: "POST",
url: "test.php",
data: { name : array },
error: function() {
$.facebox("err");
},
success: function(data) {
$.facebox(data);
}
});
});
}
一起使用。
现在谈谈你的问题。我重构了你的代码:
json_decode()
在您的PHP代码中,您将type
此数组并按您的需要使用它。我还将url
和error
参数移到了顶部,因为success
和{{1}}函数可能会非常冗长。
我会考虑阅读JavaScript Patterns(至少是Essentials章节)。