【问题标题】:Add input field button for drop down box with data from the database为包含数据库数据的下拉框添加输入字段按钮
【发布时间】:2014-12-30 15:04:30
【问题描述】:

所以我有这个“添加输入字段按钮”代码

<script>
$(document).ready(function() {
    var max_fields      = 25; //maximum input boxes allowed
    var wrapper         = $(".input_fields_wrap"); //Fields wrapper
    var add_button      = $(".add_field_button"); //Add button ID

    var x = 1; //initial text box count
    $(add_button).click(function(e){ //on add input button click
        e.preventDefault();
        if(x < max_fields){ //max input box allowed
            x++; //text box increment
            $(wrapper).append('<div><label for="NoTelefon[]">No.Telefon</label><input type="text" name="NoTelefon[]" id="NoTelefon[]" class="required input_field"><a href="#"class="remove_field">Batal</a></div>'); //add input box
        }
    });

    $(wrapper).on("click",".remove_field", function(e){ //user click on remove text
        e.preventDefault(); $(this).parent('div').remove(); x--;
    })
});

</script>

此代码将添加输入字段,也可以将其删除。但现在我想添加一个包含数据库数据的下拉框。我已使用此代码创建下拉框

    <label for="KodDaerah">Daerah</label>
                    <?php
                    include('dbase.php');
$sql    = "SELECT KodDaerah, NamaDaerah FROM koddaerah";
                    $result = mysql_query($sql);
                    echo "<select name='KodDaerah' id='KodDaerah' class='input_field' required /><option></option>";
                    while($kod = mysql_fetch_array($result)){
                    echo "<option value=".$kod['KodDaerah'].">" .$kod['NamaDaerah']."</OPTION>";
                    }
                    echo "</select>";
                    ?>  
                    <div class="cleaner_h10"></div> 

现在,我已将此代码与上面的代码组合,但添加字段按钮不起作用,有人可以帮忙吗?

这就是我结合这两个代码的方式,只需将下拉框的代码插入 arapper.append

<script>
$(document).ready(function() {
    var max_fields      = 25; //maximum input boxes allowed
    var wrapper         = $(".input_fields_wrap"); //Fields wrapper
    var add_button      = $(".add_field_button"); //Add button ID

    var x = 1; //initial text box count
    $(add_button).click(function(e){ //on add input button click
        e.preventDefault();
        if(x < max_fields){ //max input box allowed
            x++; //text box increment
            $(wrapper).append('<div><label for="NoTelefon[]">No.Telefon</label><input type="text" name="NoTelefon[]" id="NoTelefon[]" class="required input_field"> <?php $sql  = "SELECT KodLokasi, NamaLokasi FROM kodlokasi";$result = mysql_query($sql);echo "<select name='KodLokasi[]' id='KodLokasi[]' class='input_field' required /><option></option>";while($kod = mysql_fetch_array($result)){echo "<option value=".$kod['KodLokasi'].">" .$kod['NamaLokasi']."</OPTION>";}echo "</select>";?><a href="#"class="remove_field">Batal</a></div>'); //add input box
        }
    });

    $(wrapper).on("click",".remove_field", function(e){ //user click on remove text
        e.preventDefault(); $(this).parent('div').remove(); x--;
    })
});

</script>

编辑-------

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<script>
$(document).ready(function() {
    var max_fields      = 25; //maximum input boxes allowed
    var wrapper         = $(".input_fields_wrap"); //Fields wrapper
    var add_button      = $(".add_field_button"); //Add button ID

    var x = 1; //initial text box count
    $(add_button).click(function(e){ //on add input button click
        e.preventDefault();
        if(x < max_fields){ //max input box allowed
            x++; //text box increment
            $(wrapper).append('<div> <input type="text" name="NoTelefon[]" id="NoTelefon[]" class="required input_field">'+
                                '<?php
                                $sql  = "SELECT KodLokasi, NamaLokasi FROM kodlokasi";
                                $result = mysql_query($sql);
                                echo "<select name=\'KodLokasi[]\' id=\'KodLokasi[]\' class=\'input_field\' required /><option></option>";
                                while($kod = mysql_fetch_array($result)){
                                echo "<option value=".$kod['KodLokasi'].">" .$kod['NamaLokasi']. "</OPTION>";
                                }
                                echo "</select>";
                                ?>'+

                                '<a href="#" class="remove_field">Batal</a></div>'); //add input box
        }
    });

    $(wrapper).on("click",".remove_field", function(e){ //user click on remove text
        e.preventDefault(); $(this).parent('div').remove(); x--;
    });
});

</script>

【问题讨论】:

  • 显示有问题的代码可能会有所帮助。我们不知道您是如何修改 click() 事件以添加下拉菜单,或者您是如何通过 JavaScript 操作 PHP 生成的 HTML 等。
  • 查看编辑@halfnibble
  • 部分问题可能是您正在回显单引号 (
  • 所以解决方案是将单引号更改为双引号? @halfnibble
  • 嗯,比这复杂一点。您可以使用单引号,只要它们被转义。我将使用示例格式创建一个答案。

标签: javascript php jquery


【解决方案1】:

我相信您遇到的主要问题与 PHP 在您的 JavaScript 字符串(用单引号分隔)中放置非转义单引号有关。

注意:您在 PHP 中用于数据库查询的方法通常被认为已弃用,但我将它们留在这里以防您的 PHP 版本仅支持函数式查询。

这里是一个如何编写click()事件附加函数的例子:

$(wrapper).append('<div><label for="NoTelefon[]">No.Telefon</label>'+
    '<input type="text" name="NoTelefon[]" id="NoTelefon[]" class="required input_field">'+
    '<?php
        $sql  = "SELECT KodLokasi, NamaLokasi FROM kodlokasi";
        $result = mysql_query($sql);
        echo "<select name=\'KodLokasi[]\' id=\'KodLokasi[]\' class=\'input_field\' required /><option></option>";
        while($kod = mysql_fetch_array($result)){
            echo "<option value=\'".$kod['KodLokasi']."\'>" .$kod['NamaLokasi']. "</OPTION>";
        }
        echo "</select>";
    ?>'+
    '<a href="#" class="remove_field">Batal</a></div>'); //add input box

【讨论】:

  • 是的,它是用引号引起来的。 标签之外发生的事情被 PHP 处理器完全忽略。自己测试一下。 '\"'\"
  • 当您需要将 JavaScript 变量分配给 PHP 字符串常量时,这一事实非常有用。
  • 这让我认为 JavaScript 已损坏,因此无法阻止默认的 onclick 事件(这是唯一可能导致页面刷新的事件)。代码是否存在于某个地方?或者你能导出生成的 HTML 吗?您的浏览器是否有 JavaScript 错误控制台?
  • 一方面,您在 $(wrapper).on(...) 之后缺少一个分号
  • 哦,我之前错过了。您不需要以 /> 结束初始选择标记。这表明选择元素的结束。第一个选择标记应仅以 > 结尾。喜欢:
猜你喜欢
  • 2019-03-07
  • 1970-01-01
  • 2015-01-07
  • 1970-01-01
  • 1970-01-01
  • 2016-07-13
  • 1970-01-01
  • 2021-10-25
  • 1970-01-01
相关资源
最近更新 更多