0

こんにちは、前のテキスト ボックスのエントリに応じて複数のテキスト ボックスを動的に追加する必要がある Web フォームがあります。前のテキスト ボックスに 1 文字が入力された場合でも、前のテキスト ボックスからフォーカスを失うことなく、その横に新しいテキスト ボックスを生成する必要があります。制限なしでできるだけ多くの文字を入力できるようにします..これが私のコードです:

    getId = function ()
     {
        var id = 1;
        return function () 
        {
            id++;
        }
    }

    function CreateTextbox()
     {
        var box = document.getElementById("divCreateTextbox");
        var curr = 'txt' + getId();
        var inp = document.createElement('input');

        inp.type = 'text';
        inp.name = 'textfield';
        inp.setAttribute("id", curr);
        inp.setAttribute("minlength",'1');
        box.appendChild(inp);
        inp.setAttribute('onkeyup', 'moveOnMin(this)');
        inp.focus();

    }

    function moveOnMin(s)
     {
      if(s.value.length >= parseInt(s.getAttribute("minlength")))
      {

         CreateTextbox();
      }

上記のコードの問題は、1 つのテキスト ボックスに 1 文字を入力するだけで、フォーカスが新しいテキスト ボックスに移動することです。テキスト ボックスに複数の文字を入力しようとするたびに、文字ごとに新しいテキスト ボックスが作成されます。解決策はありますか??

4

1 に答える 1

0

これを試して。

function CreateTextbox()
{
    var box = document.getElementById("divCreateTextbox");
    var curr = 'txt' + getId();
    var inp = document.createElement('input');

    inp.type = 'text';
    inp.name = 'textfield';
    inp.setAttribute("id", curr);
    inp.setAttribute("minlength",'1');
    box.appendChild(inp);
    inp.setAttribute('onkeyup', 'moveOnMin(this)');
    inp.setAttribute("textBoxAdded", "0");
    //inp.focus();

}

function moveOnMin(s)
{
    if (s.value.length == parseInt(s.getAttribute("minlength")) && s.getAttribute("textBoxAdded") == "0") 
{
        CreateTextbox();
        s.setAttribute("textBoxAdded", "1");
        s.focus();
    }
}

あなたのコードを次のように変更しました: 1. 既存の TextBox にフォーカスしたままにします。2. TextBox をすべての TextBox から 1 回だけ追加する

于 2013-05-09T14:25:42.203 に答える