【问题标题】:Add form fields dynamically populated dropdown list with php使用php添加表单字段动态填充的下拉列表
【发布时间】:2014-01-13 10:07:59
【问题描述】:

我正在尝试制作 3 个表单字段(由 .php 脚本和 2 个文本字段动态填充的下拉列表),并且还使用按钮添加 3 个和 3 个等等(当用户单击按钮时)我尝试了几种方法,但似乎对我没有任何作用。 (我是 JS、AJAX、jQuery 的菜鸟,所以我主要尝试在互联网上找到的脚本)。 以下是这些表单字段的代码:

<form id="form1" name="form1" method="post" action="results.php">
 <div id="itemRows">
    <select name="species">
            <option value="">Select Species</option>';
            <?php $sql = "SELECT common FROM species";
            $speciesq = mysqli_query($con, $sql);

while($row = mysqli_fetch_array($speciesq))
{
    echo "<option value=\"" . $row['common'] ."\">" . $row['common'] ."</option>";
}
?> 
</select>
    Number: <input type="text" name="speciesnumber1" size="7" /> Weight: <input type="text" name="speciesweight1" /> <input onClick="addRow(this.form);" type="button" value="+" />     
    </div></form>

在这个表格之后是代码:

<script type="text/javascript">
var rowNum = 0;
var ddsel = '<select name="species'+rowNum+'>';
var ddopt = '<option value="">Select Species</option>';
var ddselc= '</select>';
function addRow(frm) {
    rowNum ++;
    $.post("getlist.php", function(data) {
        for (var i=0; i<data.length; i++) {
            ddopt += '<option value="'+data[i].value+'">'+data[i].value+'</option>';
        } 
    }, "json");
    var row = '<p id="rowNum'+rowNum+'">'+ddsel+ddopt+ddselc+'Number: <input type="text" name="speciesnumber'+rowNum+'" size="7" value="'+frm.add_qty.value+'"> Weight: <input type="text" name="speciesweight'+rowNum+'" value="'+frm.add_name.value+'"> <input type="button" value="-" onclick="removeRow('+rowNum+');"></p>';
    jQuery('#itemRows').append(row);
    frm.add_qty.value = '';
    frm.add_name.value = '';
}

function removeRow(rnum) {
    jQuery('#rowNum'+rnum).remove();
}
</script>

getlist.php 是一个简单的脚本,用于填充下拉列表并发送数据:

<?php
include("dbcon.php");
$sql = mysqli_query ($con, "SELECT common FROM species");
$result = array();
while ($row = mysqli_fetch_array($sql)){
    $result[] = array(
    'value' => $row['common'],
    );
}
echo json_encode($result);
?>

所以当我点击“+”按钮(添加行)时,什么也没有发生。

已解决:对于那些来这里的人,请阅读答案下方的 cmets。

【问题讨论】:

    标签: javascript php jquery html ajax


    【解决方案1】:

    你只是在错误的地方放了一些代码:

    var row = '<p id="rowNum'+rowNum+'">'+ddsel+ddopt+ddselc+'Number: <input type="text" name="speciesnumber'+rowNum+'" size="7" value="'+frm.add_qty.value+'"> Weight: <input type="text" name="speciesweight'+rowNum+'" value="'+frm.add_name.value+'"> <input type="button" value="-" onclick="removeRow('+rowNum+');"></p>';
    jQuery('#itemRows').append(row);
    frm.add_qty.value = '';
    frm.add_name.value = '';
    

    需要像这样移动到post返回函数中:

    function addRow(frm) {
        rowNum ++;
        $.post("getlist.php", function(data) {
            var frm = document.getElementById('form1');
            for (var i=0; i<data.length; i++) {
                ddopt += '<option value="'+data[i].value+'">'+data[i].value+'</option>';
            } 
            var row = '<p id="rowNum'+rowNum+'">'+ddsel+ddopt+ddselc+'Number: <input type="text" name="speciesnumber'+rowNum+'" size="7" value="'+frm.add_qty.value+'"> Weight: <input type="text" name="speciesweight'+rowNum+'" value="'+frm.add_name.value+'"> <input type="button" value="-" onclick="removeRow('+rowNum+');"></p>';
            jQuery('#itemRows').append(row);
            frm.add_qty.value = '';
            frm.add_name.value = '';
        }, "json");
    }
    

    【讨论】:

    • @GeorgePtl 会报错吗?你有这个现场直播吗?
    • OK... 它没有对表单的引用。我现在已经调整了代码。
    • 哦,我没有意识到您的表单名称不正确。看起来 add_qty 应该是 speciesnumber1 而 add_name 应该是 speciesweight1?如果你更新这些,你还好吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-05
    • 1970-01-01
    • 2013-07-03
    • 1970-01-01
    • 2016-10-19
    • 1970-01-01
    相关资源
    最近更新 更多