适用于 PHP 但不适用于脚本

比利乔

这是输出

我有这个完美运行的代码。下拉字段包含选项。但是当我尝试使用“添加更多”按钮创建新行时,下拉菜单不起作用。请检查输出。

    <select name="name[]"/>
    <?php
    echo "<option SELECTED DISABLED>SELECT CUSTOMER</option>";
    while($result = mysqli_fetch_array($query1)){
    echo "<option value='$result[description]'>" . $result['description'] . "</option>";
    }
    ?>
    </select>/td>  
<td><button type="button" name="add" id="add" class="btn btn-success">Add More</button></td> 

使用这样的脚本:

$(document).ready(function(){  
      var i=1;  
      $('#add').click(function(){  
           i++;  
           $('#dynamic_field').append('<tr id="row'+i+'"><td><select name="name[]"/><?php echo "<option SELECTED DISABLED>SELECT CUSTOMER</option>"; while($result = mysqli_fetch_array($query1)){ echo "<option value='$result[description]'>" . $result['description'] . "</option>";}?></select></td>         <td><button type="button" name="remove" id="'+i+'" class="btn btn-danger btn_remove">X</button></td></tr>');  
      }); 

但是 #add 不会创建一个新的输入表单。我相信 #dynamic_field 脚本有问题,我找不到它。谢谢

里克登汉

有两个问题。

  1. <option>在外部渲染的原因<select>是因为您使用了自关闭<select />标签。您需要/<select name="name[]" />.
  2. 您正在重复使用$query1两个循环。如果不重置内部指针(结果对象内的指针,用于跟踪您请求的行),您就无法做到这一点。mysqli_data_seek($query1, 0);在开始第二个while循环之前,您可以通过在任何地方使用来做到这一点

这将使您的 javascript 代码像这样(我将 PHP 代码分成多行以提高可读性):

$(document).ready(function(){  
    var i=1;  
    $('#add').click(function(){  
        i++;  
        $('#dynamic_field').append('<tr id="row'+i+'"><td><select name="name[]"><?php
            echo "<option SELECTED DISABLED>SELECT CUSTOMER</option>";
            mysqli_data_seek($query1, 0);
            while($result = mysqli_fetch_array($query1)){
                echo "<option value=\\'$result[description]\\'>" . $result['description'] . "</option>";
            }
        ?></select></td><td><button type="button" name="remove" id="'+i+'" class="btn btn-danger btn_remove">X</button></td></tr>');
    })
});

编辑:关于问题1 的更多信息

当涉及到无效的 HTML 代码时,浏览器是非常宽容的。他们看到你的自闭<select />后跟<option>a</select>并且他们认为“哦,好吧,那个首字母<select />应该是<select>then”并正确渲染它。但是,当您直接使用 Javascript 操作 DOM 时(在本例中,通过使用 jQuery 的.append()函数),所有错误纠正逻辑都将被跳过,您必须在第一次正确操作。

编辑 2:由于您对 使用单引号,因此.append('[...]')会与该<option value='[...]'>字符串内部发生冲突<option>需要转义的单引号由于\是 PHP 中的转义字符,因此您需要将它们双斜线。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

PHP下载不适用于&

来自分类Dev

重定向301适用于HTML,但不适用于PHP文件?

来自分类Dev

opendkim命令不适用于PHP

来自分类Dev

URL重写:规则适用于某些.php页面,但不适用于其他页面。

来自分类Dev

DateTimeZone适用于PHP v7.0,但不适用于v5.4

来自分类Dev

正则表达式适用于Javascript,但不适用于PHP preg_match

来自分类Dev

适用于PHP,不适用于PHPUnit

来自分类Dev

PHP exec适用于apache2但不适用于nginx

来自分类Dev

条件不适用于php

来自分类Dev

更新不适用于php mysql

来自分类Dev

PHP下载不适用于&

来自分类Dev

PHP-CPP新扩展适用于cli'php'命令,但不适用于浏览器

来自分类Dev

PHP:if语句不适用于的表单

来自分类Dev

MySQL查询不适用于PHP

来自分类Dev

查询适用于mysql,但不适用于php sql调用

来自分类Dev

wp 条件适用于 php 7 但不适用于 php 5

来自分类Dev

Curl 请求适用于控制台,但不适用于 PHP

来自分类Dev

自动 jquery 重新提交适用于表单中的硬编码值,但不适用于 PHP 变量

来自分类Dev

PHP forloop 不适用于数组

来自分类Dev

PHP Json 不适用于 jsoncallback

来自分类Dev

mysqli 不适用于 php 日期

来自分类Dev

php 不适用于 ubuntu 18.04

来自分类Dev

PHP 查询不适用于 DELETE

来自分类Dev

ajax 不适用于 php

来自分类Dev

php 如果查询适用于 wamp 但不适用于实时服务器

来自分类Dev

正则表达式匹配表达式适用于 php 但不适用于 javascript

来自分类Dev

PHP foreach 不适用于 MySQL

来自分类Dev

代码适用于静态 PHP 值,但不适用于动态变量

来自分类Dev

PHP 串行适用于 Windows,但不适用于 linux