【问题标题】:jQuery + form issuesjQuery + 表单问题
【发布时间】:2013-05-24 15:37:46
【问题描述】:

我在使用 jQuery 制作表单时遇到了一些小问题。我会尽量解释清楚。

我有一个按钮,当它被点击时,它会生成一个新的输入。我已经使用 jQuery 成功完成了这项工作,将输入命名为:image-1、image-2 等。 问题是,当我提交表单时,使用 jQuery 添加的输入无法被抓取输入值的页面识别,并显示“未定义变量“image-X”。

我真的不知道为什么,因为我已经这样做了,以前完全一样并且工作过,但现在不行了。

希望你能帮我解决这个问题!

谢谢大家

抱歉,忘记添加代码了!

这就是我所拥有的: HTML

<form method="post" action="update.php?IdMant='.$mant.'" enctype="multipart/form-data">
<input type="hidden" name="id" value="'.$id.'" />
<tr>
    <td align="right"><span id="ai">Insert Image</span></td>
</tr>
<tr>
    <td id="images">
        <label>Image:</label><input type="file" name="image-1" /> Order:<input type="text" name="order-1" size="2"/>
    <div class="clear"></div>
    </td>
</tr>
<tr>
<input type="hidden" name="numImages" value="1" id="numImages" />
    <td><input type="submit" value="Upload Image/s"></td>
</tr>
</form>

jQuery 代码:

var i = 2;
var n = 2;
$(document).ready(function() {
    $("#ai").click(function() {
        $("#images").append("<label>Image:</label><input type='file' name='image-"+i+"' /> Order:<input type='text' name='order-"+i+"' size='2' /><div class='clear'></div>");
        $("#numImages").val(n);
        n++;
        i++;
    });
});

所有这些方法都可以正常工作,现在是 PhP 代码:

for($i = 1; $i <= $_POST['numImages']; $i++) {
if(!empty($_FILES['image-'.$i]['name'])) {
    $name = $_FILES['image-'.$i]['name'];
    $type = $_FILES['image-'.$i]['type'];
    $folder = "img/";
    $folder = $folder.$name;
    if($type == "jpeg" || $type == "jpg" || $type == "gif" || $type == "png") {
        if(!move_uploaded_file($_FILES['image-'.$i]['tmp_name'], $folder)) {
            $error .= "Error ocurred with ".$name." file<br />";
        }
        else {
            insert_image_to_db($_POST['id'], $folder, $_POST['order-'.$i]);
        }
    }
    else {
        $error .= "Type of image <b>".$name."</b> incorrect.<br />";
    }
}
}

【问题讨论】:

  • 没有水晶球很难分辨。显示一些东西
  • 你能发布你的 HTML 代码吗?
  • 您是否使用某种框架在服务器端创建表单?您是否在
    中添加输入元素?
  • 请在 jsfiddle 或此处发布您的代码
  • @Cyber​​Knight 为什么不在jsbin.com 上?更容易,更快。 这里绝对是。

标签: php jquery forms input


【解决方案1】:

您应该添加 table 标记并在您的 jquery 中使用它。如下所示

<input type="hidden" name="id" value="'.$id.'" />
<table id="mytable">
...
<tr id="mytr">
    <td id="images">

$("#mytable #mytr #images").append(...);

编辑 1:

您的submit input 没有像下面这样的name 属性。

<input type="submit" value="Upload Image/s" name="submit">

你应该得到类似下面的输入

if (isset($_POST['submit']){
...
for($i = 1; $i <= $_POST['numImages']; $i++) {
...

【讨论】:

  • 好吧,谢谢,但是,使用 jQuery 添加的输入有效,但在恢复 php 文件中的表单数据时无效。我不知道是不是因为“页面加载时没有加载”,然后点击提交时,它不会发送新的。我可以用新的提交替换原来的吗?
  • 我编辑了我的答案。我在自己的php 中使用action="" 进行了测试,没有出现任何错误。
  • 我尝试在提交时添加名称,但没有,而且,action="" 是什么意思?我的操作转到通过 post 获取所有输入的页面
  • 请用$_POST输入您的输入代码。我编辑了我的答案
  • for($i = 1; $i &lt;= $_POST['numImages']; $i++) { } 这给了我 3,并且 jQuery 很好地更新了 foreach 中 numImages 的帖子,我得到了输入,即文件,就像这样 $_FILES['image-'.$i]['name'] 但这里说不是定义,除了第一个,那个是加载表单页面时唯一的一个。编辑:感谢您的帮助,认真
猜你喜欢
  • 2011-07-17
  • 2019-10-05
  • 2017-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多