0

ページの読み込み時に入力フィールドの固定セットがあります。値が表示されたチェックボックスがあり、誰かがチェックボックスをチェックすると、値が入力フィールドに追加されます。すべての入力フィールドが入力されると、新しいフィールドが作成されます。私の問題は、チェックボックスの値が既存の入力フィールドに正しく挿入され、値を超えた場合、新しい入力フィールドが作成されますが、入力フィールドの作成時に値がすぐに挿入されないことです。次のクリックでのみ値が挿入されます新しく作成された入力フィールド。これがコードです

<script>
    function fillin(entire,name,id,key) {
        if (entire.checked == true) {
            var split_info = new Array();
            split_info = name.split(":"); 
            var div = $("#Inputfields"+id);
            var till = (div.children("input").length)/4;
            var current_count = 0;
            for (var j=0;j<till;j++) {
                if (document.getElementById("insertname_"+j+"_"+id).value == "" && document.getElementById("insertnumber_"+j+"_"+id).value == "") {
                    document.getElementById("insertname_"+j+"_"+id).value = split_info[0];
                    document.getElementById("insertnumber_"+j+"_"+id).value = split_info[1];
                    break;
                } else
                    current_count = current_count+1;
                if (current_count == till) {
                    var x= addnew(id);
                    x =x+1;
                    $("#Inputfields"+id).find("#insertname_"+x+"_"+id).value = split_info[0];
                    alert($("#Inputfields"+id).find("#insertname_"+x+"_"+id).value);
                    document.getElementById("insertname_"+x+"_"+id).text = split_info[0];
                    //alert(document.getElementById("insertname_"+x+"_"+id).value);
                    //document.getElementById("insertnumber_"+x+"_"+id).value = split_info[1];
                }
            }
        } else {
        }
    }
</script>

<script>
function addnew(n) {
    //var id = $(this).attr("id");
    var div = $("#Inputfields"+n);
    var howManyInputs = (div.children("input").length)/4;
    alert(howManyInputs);
    var val = $("div").data("addedCount");

    var a = '<input type="search" id="insertinstitute_'+(howManyInputs)+'_'+n+'" placeholder="Institute" class="span3">';
    var b =  '<input type="search" id="insertname_'+(howManyInputs)+'_'+n+'" placeholder="name" class="span3">';
    var c =  '<input type="search" name="" id="insertnumber_'+(howManyInputs)+'_'+n+'" placeholder="number" class="span3">';
    var d =  '<input type="search" name="" id="insertarea_'+(howManyInputs)+'_'+n+'" placeholder="area" class="span3">';
    var fin = a+b+d+c;
    $(fin).appendTo(div);
    div.data("addedCount", div.data("addedCount") + 1);
    return howManyInputs;
}
</script>

更新: ありがとうございました。バグを見つけることができました。犯人は x =x+1;. だったはずx

4

2 に答える 2

5

問題はおそらくここにあります:

document.getElementById("insertname_"+x+"_"+id).text

text要素にはプロパティはありません。(IE8ではありtextContentません-)、innerText(IEでは)およびinnerHTML. textただし、jQuery にはメソッドがあります。したがって、次のいずれかを実行できます。

document.getElementById("insertname_"+x+"_"+id).innerHTML = ...

また

$("#insertname_"+x+"_"+id).text(...);

また、これらの行:

$("#Inputfields"+id).find("#insertname_"+x+"_"+id).value = split_info[0];
alert($("#Inputfields"+id).find("#insertname_"+x+"_"+id).value);

.value.val()これらは jQuery オブジェクトであるため、に置き換える必要があります。

于 2013-04-19T13:00:16.690 に答える