【问题标题】:PHP: HTML: send HTML select option attribute in POSTPHP:HTML:在 POST 中发送 HTML 选择选项属性
【发布时间】:2013-01-12 18:24:19
【问题描述】:

我想发送选定的项目值以及一些属性(stud_name)值。 PHP中是否有任何功能可以做到这一点?

这是一个例子。

<form name="add">
    Age: 

    <select name="age">
         <option value="1" stud_name="sre">23</option>
         <option value="2" stud_name="sam">24</option>
         <option value="5" stud_name="john">25</option>
     </select>

    <input type="submit" name="submit">

</form>

【问题讨论】:

  • AFAIK,您必须使用 javascript/jquery 来完成。我认为仅在 PHP 中是不可能的
  • 我认为这些值是学生的 ID。获得 ID 后,您还可以使用学生姓名(来自数据库),对吗?不要依赖用户端。
  • @asprin, If then js中怎么做
  • 或者您可以将 stud_name 添加到带有分隔符的值中。发布后,您可以在分隔符上划分它们。

标签: php html html-parsing


【解决方案1】:
<form name="add" method="post">
     <p>Age:</p>
     <select name="age">
        <option value="1_sre">23</option>
        <option value="2_sam">24</option>
        <option value="5_john">25</option>
     </select>
     <input type="submit" name="submit"/>
</form>

您将在$_POST['age'] 中拥有选定的值,例如1_sre。然后您将能够拆分值并获得'stud_name'

$stud = explode("_",$_POST['age']);
$stud_id = $stud[0];
$stud_name = $stud[1];

【讨论】:

    【解决方案2】:

    你可以用 JQuery 做到这一点

    简单地说:

       <form name='add'>
       Age: <select id="age" name='age'>
       <option value='1' stud_name='sre'>23</option>
       <option value='2' stud_name='sam'>24</option>
       <option value='5' stud_name='john'>25</option>
       </select>
       <input type='hidden' id="name" name="name" value=""/>
       <input type='submit' name='submit'/>
       </form>
    

    在 Header 部分添加此代码:

    <script src="http://code.jquery.com/jquery-1.9.0.min.js"></script>
    

    现在的 JQuery 函数

    <script type="text/javascript" language="javascript">
    $(function() {
          $("#age").change(function(){
          var studentNmae= $('option:selected', this).attr('stud_name');
          $('#name').val(studentNmae);
       });
    });
    </script>
    

    您可以将这两个值都用作

    $name = $_POST['name'];
    $value = $_POST['age'];
    

    【讨论】:

      【解决方案3】:

      您必须使用 JavaScript。浏览器只会发送所选选项的value(所以不是PHP的错)。

      您的 JS 应该做的是挂钩表单的提交事件,并使用所选选项的 stud_name 值创建一个隐藏字段。然后这个隐藏字段会被发送到服务器。

      话虽如此...您不应该通过客户端中继来提供正确的数据。您已经知道stud_name 对于服务器上的给定值应该是什么(因为您正在输出它)。因此,在处理表单时只需应用相同的逻辑即可。

      【讨论】:

        【解决方案4】:

        只需将值和 stud_name 结合起来,例如1_sre 并在将其放入 php.ini 时拆分该值。 Javascript 看起来就像是敲碎了坚果的锤子。注:此方法假定您可以编辑 html。下面是 html 的样子:

        <form name='add'>
        Age: <select name='age'>
             <option value='1_sre'>23</option>
             <option value='2_sam>24</option>
             <option value='5_john>25</option>
             </select>
        <input type='submit' name='submit'/>
        </form>
        

        【讨论】:

          【解决方案5】:

          你可以使用jquery函数。

          <form name='add'>
             <input type='text' name='stud_name' id="stud_name" value=""/>
             Age: <select name='age' id="age">
             <option value='1' stud_name='sre'>23</option>
             <option value='2' stud_name='sam'>24</option>
             <option value='5' stud_name='john'>25</option>
             </select>
             <input type='submit' name='submit'/>
          </form>
          

          jquery 代码:

          <script type="text/javascript" src="jquery.js"></script>
          
          <script>
              $(function() {
                    $("#age").change(function(){
                    var option = $('option:selected', this).attr('stud_name');
                    $('#stud_name').val(option);
                 });
              });
          </script>
          

          【讨论】:

            猜你喜欢
            • 2021-05-10
            • 1970-01-01
            • 2012-04-20
            • 1970-01-01
            • 1970-01-01
            • 2020-11-13
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多