2012-09-24 49 views
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); 

回答

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

0

我清理了一下你的代碼並添加了af您可以查看中號: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);​ 
+0

您可以使用您當前使用的代碼更新該jsfiddle嗎? –

+0

非常感謝你們兩個,但我仍然得到+,因爲我的div是contenteditable =「true」,所以當我按+時仍然出現。對不起,我以前沒有提過它。真對不起。 – jimakos17