我在使用Javascript或Jquery创建带有字符串计数的动态字段时遇到了一个问题

我在使用Javascript或Jquery创建带有字符串计数的动态字段时遇到了一个问题,javascript,jquery,dynamic,logic,appendchild,Javascript,Jquery,Dynamic,Logic,Appendchild,使用JavaScript或jQuery创建带有stringcount的动态字段时,我遇到了一个问题 简报 我想在sting count的帮助下创建动态字段,例如,当我在player textfield上像这样写一些文本时p1、p2、p3他们在dynamicDiv上创建三个文件字段,或者当我删除player textfield上的一些文本时,像这样p1,p2在同一时间,它们只创建了两个文件字段仅此而已 整个场景取决于键控事件 代码: 函数commasperatedCount(){ var cs_

使用JavaScript或jQuery创建带有stringcount的动态字段时,我遇到了一个问题

简报

我想在sting count的帮助下创建动态字段,例如,当我在
player textfield
上像这样写一些文本时
p1、p2、p3
他们在
dynamicDiv
上创建三个
文件字段
,或者当我删除
player textfield
上的一些文本时,像这样
p1,p2
在同一时间,它们只创建了两个
文件字段
仅此而已

整个场景取决于键控事件

代码:


函数commasperatedCount(){
var cs_count=$('#player').val();
var字段=cs_count.split(/,/);
var fieldscont=fields.length;
对于(var i=1;i
var seed=false),
c=0,
删除=假;
$('#player')。在('keyup',函数(e)上{
var val=该值;
如果($.trim(此.value)){
如果(e.which==188){
种子=假;
}
如果(e.which==8 | | e.which==46){
var commaCount=val.split(/,/g).length-1;
如果(通信量


函数创建(playerList){
试一试{
var player=playerList.split(/,/);
}捕捉(错误){
//
返回false;
}
var str=“”;

对于(var i=0;i您知道您可以在文件输入上设置
multiple
属性,并以这种方式上载多个文件。尽管如此,所有文件都将以相同的
input
name
属性上载。如果我在keyup事件中调用此函数,它们会生成多个文件字段,您必须尝试此代码并回答我如何解决这个问题@thecodeparadox@QueryMaster你可以用bluryah绑定这个80%对我来说很有用,但我有一个问题,当我在文本字段上写一些文本时,比如p1,p2,他们只生成一个字段,或者当我在文本字段上写一些文本时,比如p1,p2,p3,他们只生成了2个字段,当我写一些文本l时,实际上我想要这个字段像这个p1,p2的文本字段,他们将生成两个字段,请回复我,如果你对此有任何想法,我在等你reply@QueryMaster请参阅Demohank以获得回复,但不幸的是,当我删除文本字段上的一些文本时,此代码中存在一个小问题。该功能无论如何都无法工作
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
function commasperatedCount(){
    var cs_count = $('#player').val();
    var fields = cs_count.split(/,/);
    var fieldsCount = fields.length;

    for(var i=1;i<=fieldsCount;i++){
        var element = document.createElement("input");
        element.setAttribute("type", 'file');
        element.setAttribute("value", '');
        element.setAttribute("name", 'file_'+i);

        var foo = document.getElementById("dynamicDiv");
        foo.appendChild(element);
    }
}
</script>

<form>
<label>CountPlayerData</label>
<input type="text" name="player" id="player" onkeyup="return commasperatedCount();" autocomplete="off" />
<div id="dynamicDiv"></div>

<input type="submit" />
</form>
var seed = false,
    c = 0,
    deleted = false;
$('#player').on('keyup', function(e) {
    var val = this.value;
    if ($.trim(this.value)) {
        if (e.which == 188) {
            seed = false;
        }
        if (e.which == 8 || e.which == 46) {
            var commaCount = val.split(/,/g).length - 1;
            if (commaCount < c - 1) {
                deleted = true;
            }

        }
        commasperatedCount();
    } else {
        c = 0;
        deleted = false;
        seed = false;
        $('#dynamicDiv').empty();
    }
});

function commasperatedCount() {
    if (deleted) {
        $('#dynamicDiv input:last').remove();
        deleted = false;
        c--;
        return false;
    }
    if (!seed) {
        c++;
        var fields = '<input value="" type="file" name="file_' + c + '">';
        $('#dynamicDiv').append(fields);
        seed = true;
    }
}​
<script>
    function create(playerList) {
        try {
            var player = playerList.split(/,/);
        } catch(err) {
            //
            return false;
        }
        var str    = "";

        for(var i=0; i<player.length; i++) {
            str += '<input type="file" id="player-' + i + '" name="players[]" />'; 
            //you wont need id unless you are thinking of javascript validations here
        }

        if(playerList=="") {str="";} // just in case text field is empty ...

        document.getElementById("dynamicDiv").innerHTML = str;
    }
</script>

<input id="playerList" onKeyUp="create(this.value);" /><!-- change event can also be used here -->

<form>
    <div id="dynamicDiv"></div>
</form>