bounty将在7天后过期。回答此问题可获得+100声望奖励。Freddy希望吸引更多人关注此问题。
我有两个radio
按钮组:
1.对于attendance
,且具有“是”和“否”值
1.对于dietary
选择,其值为“素食者/纯素食者”和“非素食者”dietary
的字段仅在用户为出勤选择“是”时显示。
我把那些接受、拒绝、选择蔬菜或非蔬菜的人分类到他们自己的数组中(所以有4个数组)。这4个数组的值被传递到一个隐藏字段,然后发布到DB。
我已经成功地将接受或拒绝的人排序到了他们自己的数组中。但是,由于我添加了另一个change
函数来对饮食选项进行排序,所以我得到了混合的结果。在演示中重新创建的步骤:
1.对于“John”,单击“是”表示出席
1.将John添加到attending list
(控制台日志)
1.对于“John”,点击“非素食”
1.将John添加到non veg list
1.对于Alex,单击“是”进行出勤
- Alex与John一起添加到
attending list
1.对于Alex,点击“素食主义者/纯素食主义者”
1.亚历克斯被添加到“蔬菜名单”,但约翰被从“非蔬菜名单”中删除
此外,如果用户最初点击yes来出席,然后选择diet选项,然后点击“no”来出席,他们的名字应该从diet数组中删除(因为他们没有出席)。
演示如下:
第一个
也尝试过
diet_radio.on('change', function() {
var $this = $(this);
var name = $this.data("name");
var checkedVal = $this.val();
// only add to diet arrays if user is attending
if ( $(this).closest(".guest").find(".input-radio-attendance:checked").val() == "yes" ) {
if (checkedVal == "veg") {
veg_array.push(name);
nonveg_array.splice($.inArray(name, nonveg_array), 1);
} else {
nonveg_array.push(name);
veg_array.splice($.inArray(name, veg_array), 1);
}
}
// if user selects yes to attendance, then selects a diet option, then changes atendance to no, remove them from diet arrays
if( accepted_list.includes(name) ){
veg_array.splice( $.inArray(name, veg_array), 1 );
nonveg_array.splice( $.inArray(name, nonveg_array), 1 );
}
var veg_list = veg_array.join(",");
var nonveg_list = nonveg_array.join(",");
veg_field.val(veg_list);
nonveg_field.val(nonveg_list);
console.log("veg list: " + veg_list);
console.log("non veg list: " + nonveg_list);
});
编辑@拉约什·阿帕德
1条答案
按热度按时间cidc1ykv1#
您可以在加入阵列之前简单地执行
sort()
操作:第一个
编辑:应用了两个修复:
1.如果勾选了“不参加”,我会取消勾选“蔬菜/非蔬菜”单选框
1.如果勾选了“不参加”,我会从“蔬菜/非蔬菜”中删除该名称