2013-10-20 87 views
0

以下是原帖: Multiple dynamic input text javascriptjQuery的插入新的輸入框中KEYUP動態

Here is my attempt: http://jsfiddle.net/AZz6R/

我發現我的嘗試與原來的職位之間的差異有可能會是JavaScript和jQuery的如何治療返回聲明。在原始文章中,由於某些原因,代碼仍然會在return語句之後執行。

我的問題是任何人都可以幫助我使代碼工作在jQuery而不是普通的JavaScript?

+0

嘗試從該行刪除回報:否則,如果{ 的console.log( '這裏');($(本)。接下來()val.length> 0)。 // return; } – bksi

+0

我在發佈問題之前試過。每按一次鍵,它都會克隆一個新的輸入。 – Lancelot

回答

1

試試這個:

$('#myDiv').on('keyup', 'input', function() { 
    if($(this).val() == ''){ 
     $(this).next().remove(); 
     return; 
    } 
    else if($(this).next().val() == '') { 
     console.log('here'); 
     return; 
    } 

    var newTxt = $(this).clone(); 
    var id = newTxt.attr('id'); 
    newTxt.attr('id', 'txt_' + (parseInt(id.substring(id.indexOf('_') + 1)))); 
    newTxt.val(''); 
    $(this).parent().append(newTxt); 

}); 

jsFiddle

+0

它正在工作,但它不會克隆新的輸入,除非有兩個或更多的字符。相同的是刪除空的輸入,我需要回退兩次以刪除空的輸入。我希望輸入在盒子中有一個字符時立即進行克隆,並在當前輸入沒有任何內容的情況下立即移除下一個輸入。你能看看它有什麼問題嗎?謝謝! @bksi – Lancelot

+0

看到我編輯的答案。你使用了keydown事件,所以它會在下一次keydown時觸發。這是在第二個字符之後開始的原因。現在它在第一次字符鍵入之後起作用。 – bksi

+0

非常感謝!它現在完美地工作! – Lancelot

0

代碼中的主要問題是if條件。改變它如下應該工作:

if($(this).val()==''){ 
    $(this).next().remove(); 
    return; 
} 
else if($(this).next().val()) { 
    console.log('here'); 
    return; 
} 

第二個問題是,對於克隆輸入值不會變空。改變它,下面將工作:

newTxt.val('');