1

我正在尝试在 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:不幸的是,有些execCommand仅受IE支持,这就是我没有使用的原因

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

2 回答 2

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]);
    }
}

修改代码以进行一些优化, 小提琴解决方案

于 2012-09-24T09:47:53.973 回答
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);​
于 2012-09-24T09:50:30.710 回答