将+转换为复选框

时间:2012-09-24 09:39:23

标签: javascript checkbox

每次用户按+时,我都会尝试在JavaScript中创建一个复选框 我这样做了

function Selected(e) {
    var code;
    if (!e) var e = window.event;
    if (e.keyCode) code = e.keyCode;
    else if (e.which) code = e.which;
    var character = String.fromCharCode(code);

    if(character=='+'){
        var t1= new Array();

        t1[0]=document.createElement('input');
        t1[0].type='checkbox';
        t1[0].name='checkbox1';
        t1[0].value = "value";
        document.getElementById('myDiv').appendChild(t1[0]);

    }
}

但它显示下一行的复选框和+。 有没有办法删除+并只显示同一行中的复选框?

PS:很遗憾,只有IE支持某些execCommand,这就是为什么我没有使用

document.execCommand ('InsertInputCheckbox', false, null);

2 个答案:

答案 0 :(得分:1)

以这种方式添加:

function Selected(e) {
    e = e || window.event;
    var code = e.keyCode || e.which;

    if(String.fromCharCode(code) == '+') {
        var t1 = [];

        t1[0] = document.createElement('input');
        t1[0].type='checkbox';
        t1[0].name='checkbox1';
        t1[0].value = "value";
        document.getElementById('myDiv').appendChild(t1[0]);
    }
}

修改了一些优化代码, fiddle for solution

答案 1 :(得分:0)

我稍微清理了一下你的代码并添加了一个小提琴供您阅读:http://jsfiddle.net/jLEa5/

    function Selected(e) {
        var code, evt, character;

        evt = e || window.event;
        if (evt.keyCode) {
            code = evt.keyCode;
        }
        else if (evt.which) {
            code = evt.which;
        }

        character = String.fromCharCode(code);

        if(character=='+') {
            var t1 = [], el;

            el = document.createElement('input');
            el.type='checkbox';
            el.name='checkbox1';
            el.value = "value";
            t1.push(el);
            document.getElementById('myDiv').appendChild(t1[0]);
        }
    }


window.addEventListener('keypress', Selected);​