从动态添加的文本输入中获取值


get value from dynamic added text input

我必须在我的页面上动态添加一些文本输入,如下所示:

$table=""; $n=0;
$arrayform=array();
foreach($rslt as $rows){                
            $table=$table."
                <div class='img-rounded row' style='margin-bottom:2%' >
                    <div class='col-lg-1'></div>
                    <div class='col-lg-4'>
                        <input id='cap-".$n."' type='text' class='form-control' value='".$rows['caption']."'>
                    </div>
                    <div class='col-lg-1' id='rightarrow'>
                        <img id='img-".$n."' src='img/right-arrow.png' width='45' height='30' alt=''/>
                    </div>
                    <div class='col-lg-4'>
                        <input id='val-".$n."' type='text' class='form-control' value='".$rows['value']."'>
                    </div>
                    <div class='col-lg-1'>
                        <input type='button' id='btn-".$n."' onClick='removeval('"".$rows['caption']."'",'"".$rows['value']."'",'"".$_GET['id']."'",'"".$rows['id']."'")' class='btn btn-danger' value='Remove Column'>
                    </div>
                </div>
                <div id='divrslt-".$n."' class='row text-success' style='margin-left:10%; margin-bottom:2%'>
                </div>              
            ";

表单元素的 ID 由变量和其他字符串确定$n。

我编写了以下代码来构造要发送到 JavaScript 函数的输入文本值的参数列表。

        $arrayform[$rows['caption']]="cap-".$n.".value,val-".$n.".value, ";         $n++;
}

通过以下代码,我使用在前一行中构造的数组作为参数来更新chartval() javascript函数。

$table=$table."
    <div class='row' style='margin-left:4%'>
        <button type='button' class='btn btn-success' onClick='updatechartval(".implode(" ",$arrayform)."'"".$_GET['id']."'")' value='update'>
            Update
        </button>
    </div>
";

然后我附和道:

echo $table;

呈现的按钮代码为:

<button type="button" class="btn btn-success" onclick="updatechartval(cap-0.value,val-0.value,  cap-1.value,val-1.value,  cap-2.value,val-2.value,  cap-3.value,val-3.value, &quot;126&quot;)" value="update">
            Update

但是当我运行代码时,发送的是元素的 ID 而不是文本输入的值。我该如何解决这个问题?谢谢。。。

你正遭受相当于SQL注入攻击的javascript:

[..snip..] onclick="updatechartval(cap-0.value,val-0.value,[..snip..]
                                   ^^^^^^^^^^^

您需要在函数调用中引用参数,因为现在代码被解释/执行为:

updateCharval(unknown/undefined variable "cap" minus 0.value, ...

整数没有.value属性,并且由于您试图从未定义的变量中减去该未定义的值属性,因此您会在脸上炸开一大堆东西。

生成器函数应更像:

$arrayform[$rows['caption']]="'cap-".$n.".value','val-".$n.".value' etc...
                              ^----------------^ ^----------------^

请注意额外的引号。

您需要

updatechartval(param1, param2)函数获取输入的值。现在你正在尝试在javascript标签之外运行javascript。

所以你最终会得到这样的东西:

function updatechartval(a,b) {
    valueA = document.getElementById(a).value;
    valueB = document.getElementById(b).value;
}