2017-03-13 63 views
1

我想作一個李可輸入的頁面被執行之後。我希望li功能接近Word Office格式。我的意思是,當我們寫在第一個列表上,然後輸入它,它會關注第二個列表等。這是我的代碼我之前所做的:追加在<li><input/></li>作品只是一個時間

<div class="writeform"> 
    <label class="subtitle">ingredients</label> 
    <ol> 
     <li><input class="formxyz globalwrite" id="ingred" name="ingred" placeholder="ingredients"></input> 
     </li> 

    </ol> 
</div> 

,這是AJAX腳本

$('input#ingred').on('keydown',function(e){ 
    if(e.which == 13) { 
     $('ol').append('<li><input class="formxyz globalwrite" id="ingred" name="ingred" placeholder="ingredients"></input></li>'); 
     $('input#ingred').focus(); 
    } 
}); 
當我運行此代碼,並在第一行寫,然後我按回車,

第二個李出現了。但是,當我在第二里寫作並按回車時,沒有附加任何內容。當我按下ENTER鍵時,如何使這個附加功能連續工作?

+3

'$( '輸入#ingred')。在( 'KEYDOWN',函數(E){'變化到'$(文件)。在( 'KEYDOWN', '輸入#ingred',函數(E){因爲你已經有name屬性了 – guradio

+0

對不起,實際上我在$(document).ready(function)中寫了我的腳本()...所以,這行代碼可以放在裏面嗎?或者我應該把它寫在$(document).ready()的相同層次結構中,謝謝 – ahr

+0

裏面的文檔。ready @ahr – guradio

回答

1

你不能有ID值的重複使用 - 這是不合法的HTML,你的input元素選擇將無法正常工作。同樣的事情對於使用類也是如此,儘管可以多次使用某個類是有效的,但該選擇將選擇所有匹配的元素。您將需要生成一個唯一的ID,或使用不同的選擇來選擇最後輸入元素,如jQuery的.last()選擇。

+0

這是缺少事件代表團 – guradio

0

如果有相同名稱的兩個ID選擇,jQuery的只能選擇第一個。

0

你應該使用委託方法綁定keydown事件,像這樣:

更改此:

$('input#ingred').on('keydown',function(e) {

進入這個:

$(document.body).on('keydown','input#ingred',function(e) {

因爲第一語法將不綁定到稍後創建的元素(動態)。

UPDATE

更多正確的方法,你應該把它綁定到classname屬性,而不是id,因爲id ID最初命名的元素,應該是唯一的。

我覺得這是你正確的方法需要什麼::d

$(document.body).on('keydown','input.formxyz',function(e) {

或:

$(document.body).on('keydown','input[name="ingred"]',function(e) {

祝你好運!

+0

id應該是唯一的 – guradio

+0

啊,你是對的!我應該糾正我的答案。 –

+0

謝謝@taufik的申請,我已經嘗試過使用該代碼,但是當我想要設置焦點時,我卡住了。 :D ...但任何方式,非常感謝你 – ahr

相關問題