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

时间:2015-03-16 18:49:02

标签: javascript php html

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

$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++;
}

使用以下代码,我使用在前一行中构造的数组作为updatechartval()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被发送而不是文本输入的值。 我怎么能解决这个问题? 感谢...

2 个答案:

答案 0 :(得分:0)

您正遭受与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...
                              ^----------------^ ^----------------^

请注意额外的报价。

答案 1 :(得分:0)

您需要从updatechartval(param1, param2)函数获取输入值。现在你正试图在javascript标签之外运行javascript。

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

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