2013-12-07 38 views
0

我有一個字段,用戶可以在其中鍵入一個數字。根據用戶輸入的數量,通過將附加的HTML添加到後續的div來顯示一些額外的輸入字段。鍵盤調用的行爲不一致(調用函數根據字段輸入附加多個輸入字段)

它工作通常很好,把被添加 「1」 的結果在1場中,但是一些數字似乎沒有工作: 1 = 1場 2 = 2個字段 3 = 2個字段() 4 = 3個字段 5 = 3個字段() 6 = 4個場

這就像某些號碼沒有登記,併爲每一個不後續號碼n場小於他們應該是,其中n是在該點之前未註冊的較小號碼的數目。

然而,有時候把7放到7個字段的總正確值中,我看不到圖案。

HTML
輸入字段來指定字段的數目要追加:

<div class="number_input"> 
    <input id="element_207" type="number" value="" name="q_207" /> 
    </div>' 

    <div id="survey_details"></div> 

jQuery的功能設計成開火模糊或KEYUP或上述場的變化,並添加在次輸入HTML X號

$(function() { 
    var input = $('HTML TO BE APPENDED GOES HERE'); 
    var newFields = $(''); 

    $('#element_207').bind('blur keyup change', function() { 
     var n = this.value || 0; 
     if (n+1) { 
      if (n > newFields.length) { 
       addFields(n); 
      } else { 
       removeFields(n); 
      } 
     } 
    }); 

    function addFields(n) { 
     for (i = newFields.length; i < n; i++) { 
      var newInput = input.clone(); 
      newFields = newFields.add(newInput); 
      newInput.appendTo('#survey_details'); 
     } 
    } 

    function removeFields(n) { 
     var removeField = newFields.slice(n).remove(); 
     newFields = newFields.not(removeField); 
    } 
}); 

回答

1

你的代碼工作正常使用

var input = $('<div>Append</div>'); 

不過,如果你在你輸入多元素,如

var input=$('<div>Line 1</div><div>Line 2</div>'); 

兩個元素進行計數,所以你的長度將返回2,如果你已經添加它只有一次。在一個單一的<div>所有元素,它西港島線工作

var input=$('<div><div>Line 1</div><div>Line 2</div><div>'); 

http://jsfiddle.net/ZPUfy/

+0

啊!有趣的,讓我試試這個,謝謝 – Gideon

+0

魔術 - 完美的作品,謝謝 – Gideon