2

我创建了一个函数,它将所有选中的项目放入文本区域。但我的问题是选中项目的显示被索引。

例如:

[x] checkbox1(第二个刻度)
[x] checkbox2(第一个刻度)
[x] checkbox3(第三个刻度)

现在显示是这样的

复选框1->复选框2->复选框3

它应该是 checkbox2 - > checkbox1 - > checkbox3

这是功能:

function checkTick()
{

    $('input[type=checkbox]').change(function () {
            var selectedvalue=[];
            $(":checkbox:checked").each(function(){

                selectedvalue.push($(this).attr("value"));

            });
            document.getElementById('txtSignOff').value = selectedvalue.join("->");

        });

}
4

2 回答 2

3

全局范围:在全局范围内设置变量selectedvalue。而不是推送每个复选框值,只需推送当前复选框值。

取消选中时弹出值:当未选中/取消选中复选框时,应从数组中弹出相应的值,前提是数组中的所有值都应不同。

var selectedvalue=[];    

    $('input[type=checkbox]').change(function () {
                //If checked then push the value
                if($(this).is(":checked")){
                    selectedvalue.push($(this).attr("value"));
                }else{
                   //This is what pops the value from the array when the checkbox is unchecked.
                    selectedvalue.splice(selectedvalue.indexOf($(this).attr("value")),1); 
                }
                document.getElementById('txtSignOff').value = selectedvalue.join("->");    
    });

函数阻塞:你不需要将它阻塞到函数checkTick中。jQuery 实用程序在事件发生时为您提供了这样的功能。

于 2013-11-05T07:05:23.507 回答
0

你做对了,但是你的变量被覆盖了,所以它的取值不正确。让它全球化

var selectedvalue=[];

另一个重要的一点是“这里不需要为每个复选框制作 .each”

现在的功能

function checkTick()
{
    $('input[type=checkbox]').change(function () {
            selectedvalue.push($(this).attr("value"));
            document.getElementById('txtSignOff').value = selectedvalue.join("->");

        });
}
于 2013-11-05T07:07:02.137 回答