【问题标题】:How to retrieve the value of multiple inputs with the same name?如何检索具有相同名称的多个输入的值?
【发布时间】:2014-09-17 07:20:43
【问题描述】:

我正在显示来自 XML 文件的一些信息,在每个按钮旁边我都有允许用户删除数据的按钮。

现在我使用隐藏的输入字段来存储处理表单所需的一些信息。所有隐藏的输入字段都具有健全的名称值。当用户单击删除按钮时,我想检索被单击的隐藏文件的值,但它返回最后一个。

这是我的代码:

function displayPapers(){
    var courseCode = $("#subject").val();

    loadXML(courseCode, function(xmlDoc){
        $(xmlDoc).find('paper').each(function(){
            var code = $(this).find("code")[0].textContent;
            var title = $(this).find("title")[0].textContent;
            var semester = $(this).find("semester")[0].textContent;

            $("#papers").append("<p>" + code + ": " + title + " (S" + semester + ") " +
                                "<input type='submit' name='paperUpdate' value='Edit'>" +
                                "<input type='submit' name='paperDelete' value='Delete'>" +
                                "<input type='hidden' name='paperCode' value='" + code + "'></p>");
        })
    });
}

这是用于处理表单的 PHP 代码:

if(isset($_POST['paperUpdate'])){
   echo $_POST['paperCode'];
}

我想检索单击删除按钮的隐藏字段的值。我不知道如何解决这个问题。谢谢。

【问题讨论】:

  • 请添加您的 html 结构。顺便说一句 .find('paper') 正在寻找标签 ,如果你正在寻找一个类应该是 .find('.paper')
  • 请发布您用于处理点击的代码。

标签: javascript php jquery


【解决方案1】:

使用 jQuery DOM 遍历函数查找相关元素。

$('input[name=paperDelete]').click(function() {
    var paperCode = $(this).next().val();
    // Do something with paperCode
});

为了能够获取 PHP 中的所有值,您应该给它一个以[] 结尾的名称。然后 PHP 会将所有值转换为一个数组。所以把你的代码改成:

        $("#papers").append("<p>" + code + ": " + title + " (S" + semester + ") " +
                            "<input type='submit' name='paperUpdate' value='Edit'>" +
                            "<input type='submit' name='paperDelete' value='Delete'>" +
                            "<input type='hidden' name='paperCode[]' value='" + code + "'></p>");
    })
});

那么你的 PHP 就可以了:

foreach ($_POST['paperCode'] as $code) {
    echo $code;
}

【讨论】:

  • PHP 代码打印所有隐藏字段的值,我只想要被点击的那个。我怎么能在 PHP 中做到这一点?谢谢
  • 我要做的是将每个段落放在一个单独的表单中,因此单击提交按钮只会提交该段落,而不是一次提交所有段落。
  • 好主意。我会试试的。
【解决方案2】:

试试-

$("#papers").on("click","input[name='paperDelete']",function(){
  alert($(this).siblings("input[name='paperCode']").val())
})

DEMO

【讨论】:

  • 这是否适用于具有相同名称属性的多个隐藏字段?
  • 是的,如果你的html结构是这样的jsfiddle.net/vikrant47/dbsbjxLm/1,也添加你的html
【解决方案3】:

对于具有相同名称的多个字段..尝试这样的事情..

<?php
if(isset($_POST['btn']))
{
    $name = $_POST['nam'];
    //var_dump($name);
    echo $name[0];
    echo "<br>";
    echo $name[1];
    echo "<br>";
    echo $name[2];
}

?>
<form method='post'>
FirstName:<input type='text' name='nam[]'>
MiddleName:<input type='text' name='nam[]'>
LastName:<input type='text' name='nam[]'>
<input type="submit" value="POST" name="btn">
</form>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-08-03
    • 1970-01-01
    • 1970-01-01
    • 2017-04-08
    • 2010-10-03
    • 1970-01-01
    • 2021-09-06
    • 2019-01-02
    相关资源
    最近更新 更多