2014-02-05 65 views
0

我正在嘗試爲輸入到文本區域的每個單詞創建一個html元素。我的代碼到目前爲止是:限制使用jquery append和keyup創建的輸入類型的數量

<table id="sentencetable"> 
    <tr> 
    <th colspan="2">Enter Sentence</th>  <!-- colspan used to add text over multiple columns --> 
    </tr> 
    <tr> 
    <td style="vertical-align:top"> 
     English : 
    </td> 
    <td> 
     <textarea name="english" required></textarea>    <!-- inputs text areat in table data --> 
    </td> 
    </tr> 
    <tr> 
    <td style="vertical-align:top"> 
     Sanskrit : 
    </td> 
    <td> 
     <textarea id="sanskrit" name="sanskrit" required></textarea> 
    </td> 
    </tr> 

    <tr> 
    <table id="add"> 

    </table> 
    </tr> 
</table> 

<script> 
$(document).ready(function(){ 
    $('#sanskrit').keyup(function(){ 
     var sanskrit = this.value.trim();      
     var x = sanskrit.split(' '); 
     for(var i = 0; i < x.length; i++){ 
      $('#add').append('<input style="width:70px" placeholder="Enter Root" type="text" name="root'+i+'" required/>') 
     } 
    }); 
}); 
</script> 

但是每個鍵的按下它會創建一個新的文本字段,我只是想創建一個新的文本字段在梵文textarea的輸入的每一個字。任何想法如何做到這一點。

+1

在空間分隔的單詞 「每一個字輸入」 ......作爲?只聽'e.which === 32' – PlantTheIdea

+1

你只爲每個單詞創建一個文本字段。但是,每當你添加新的,你都不會刪除舊的,所以你會得到很多文本框。 – Barmar

+0

是的每個單詞都有一個新的文本框。 – user3242593

回答

2
$(document).ready(function() { 
    $('#sanskrit').keyup(function() { 
     $.each(this.value.trim().split(/\s+/), function(i) { 
      if (! $('[name="root'+i+'"]').length) { 

       var inp = $('<input />', { 
        css   : "width:70px", 
        placeholder : "Enter Root", 
        type  : "text", 
        name  : "root" + i, 
        required : "required" 
       }); 

       $('#add').append(inp) 
      } 
     }); 
    }); 
}); 

FIDDLE

+0

+1用於檢查輸入是否已經存在,以及用於使用該方法創建輸入的+1。 – War10ck

+0

打敗我做長度檢查!因爲你有預先的想法將你的原始提交包括在內,我會贊成。 :) – PlantTheIdea

+0

這很好。非常感謝 :) – user3242593

0

傾聽空格鍵:當你去創造一個新詞

$('#sanskrit').keyup(function(e){ 
    if(e.which === 32){ 
     var sanskrit = this.value.trim(), 
      x = sanskrit.split(' '), 
      $add = $('#add'); 

     for(var i = 0; i < x.length; i++){ 
      if($add.find('input[name="root'+i+'"]').length === 0){ 
       $add.append('<input style="width:70px" placeholder="Enter Root" type="text" name="root'+i+'" required/>') 
      } 
     } 
    } 
}); 

像這樣的事情只會只執行的功能。

我編輯這個只添加新的項目,如果他們不存在。

+0

這將創建具有相同名稱的多個輸入。這是期望的效果嗎? – War10ck