-1

我目前正在处理 JavaScript 中的一些输入表单,并且我已经通过脚本进行了编辑,因此一旦用户输入问题的力数,每个数字都会显示新的输入文本字段,还有一个添加的按钮最后。问题是当我尝试单击此按钮时,我尝试使用 .map 函数将所有文本字段值启动到其中,但没有任何反应。

function forceRecording(numofforces,$this){
    var addRows='<tr id=newRows>';

    for(var i =1; i<=numofforces;i++)
    {
        var nearTr=$this.closest('tr');
        addRows=addRows + "<td>Force " +i+": </td><td><form><input type='text' name='forceItem' id='newR'/></form></td>";
    }

    addRows=addRows+"<td><div class='button' id='forceButton'> Add! </div></td></tr>";
    nearTr.after(addRows);
};

$('#forceButton').click(function(){
    forces=$("input[id='newR']").map(function(){
    return $(this).val()
});    

function forceRecording(numofforces,$this){
    var addRows='<tr id=newRows>';

    for(var i =1; i<=numofforces;i++)
    {
        var nearTr=$this.closest('tr');
        addRows=addRows + "<td>Force " +i+": </td><td><form><input type='text' name='forceItem' id='newR'/></form></td>";
    }

    addRows=addRows+"<td><div class='button' id='forceButton'> Add! </div></td></tr>";
    nearTr.after(addRows);
};

$('#forceButton').click(function(){
    forces=$("input[id='newR']").map(function(){
        return $(this).val()
    });

    prompt("forces");
});

正如您所看到的,我的 forceRecording 函数正在工作,并为每个 numofforces 创建一个带有新文本输入字段的新行,但是一旦我尝试单击 forceButton 将值输入到我的 force 数组中,什么也没有发生。知道是什么原因造成的吗?

4

2 回答 2

1

我完全不知道你想要达到什么目标,但也许这会有所帮助:

function forceRecording(numofforces, $this) {
    var addRows = '<tr id="newRows">';
    for (var i = 1; i <= numofforces; i++)
        addRows += '<td>Force ' + i + ': </td><td><input type="text" name="forceItem" /></td>';
    addRows += '<td><input type="button" class="button" id="forceButton" value="Add!" /></td></tr>';
    $this.closest('tr').after(addRows);
}

$('#forceButton').click(function() {
    forces = $(this).parent().parent().filter('input[name="forceItem"]').map(function() { return $(this).val(); });
});
于 2013-07-11T01:19:15.417 回答
1

您在这里缺少代码周围的右括号

$('#forceButton').click(function(){
    forces=$("input[id='newR']").map(function(){return $(this).val()
});

应该是这样的

$('#forceButton').click(function(){
   forces=$("input[id='newR']").map(function(){
       return $(this).val();
   });
});

并且不要使用,id而是使用class name

$('#forceButton').click(function(){
    forces=$(".newR").map(function(){
        return $(this).val();
    });
});

像这样将类应用于输入字段

<input type="text" name="forceItem" class="newR"/>
于 2013-07-11T01:28:05.997 回答