Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 更改隐藏字段的值_Php_Jquery_Forms_Attr - Fatal编程技术网

Php 更改隐藏字段的值

Php 更改隐藏字段的值,php,jquery,forms,attr,Php,Jquery,Forms,Attr,我试图改变多个组合框中隐藏字段的值 下面是一个示例,我想用前面三个select元素来生成隐藏字段的值name=“myNumbers” 我该怎么做?使用jQuery更改.val()或者使用.attr()或者使用PHP中的简单变量 <select name="element1"> <option value="">Select One</option> <option value="1">1</option> <optio

我试图改变多个组合框中隐藏字段的值

下面是一个示例,我想用前面三个select元素来生成隐藏字段的值
name=“myNumbers”

我该怎么做?使用jQuery更改
.val()
或者使用
.attr()
或者使用PHP中的简单变量

<select name="element1">
  <option value="">Select One</option>
  <option value="1">1</option>
  <option value="2">2</option>
  <option selected value="3">3</option>
  <option value="4">4</option>
</select>    
<select name="element2">
  <option selected value="">Select One</option>
  <option value="1">1</option>
  <option selected value="2">2</option>
  <option value="3">3</option>
  <option value="4">4</option>
</select>    
<select name="element2">
  <option selected value="">Select One</option>
  <option value="1">1</option>
  <option value="2">2</option>
  <option value="3">3</option>
  <option selected value="4">4</option>
</select>

<input type="hidden" name="myNumbers" value="3|2|4"> 

选择一个
1.
2.
3.
4.
选择一个
1.
2.
3.
4.
选择一个
1.
2.
3.
4.

对于调用updateMyNumbers函数的每个下拉列表,必须有一个onChange函数

function updateMyNumbers() { 
   $("#myNumbers#").val(("#element1").val() +"|"+("#element2").val()+"|"+("#element3").val());
}

这会做你想做的

$(function(){
  var str = $('element1').val() + '|' + $('element2').val() + '|' + $('element3').val()
  $("[name='myNumbers']").val(str)
})
编辑

一个更完整的解决方案,它将迭代页面上的每个select元素

$(function(){
    $('select').change(function(e){
        var myNumbers = [];
        $('select').each(function(){
          myNumbers.push($(this).val());
        })
        $("[name='myNumbers']").val(myNumbers.join('|'));
    });
});

您必须使用javascript,因为php是在服务器端运行的,所以在加载页面之前或提交页面之后

在文本中:您必须捕获选择框的
change
事件,生成字符串并将该字符串放入隐藏元素中

未测试代码:

$("select").change(function(){
  var desired_value = $("[name='element1']").val() + "|" + $("[name='element2']").val() + "|" + $("[name='element3']").val();
  $("[name='myNumbers']").val(desired_value);
});

有了这段代码,您可以为隐藏的输入构建字符串

如果您想在加载页面时设置一次,那么在php中进行设置是有意义的(参见上面的答案)

如果您想在用户更改其中一个选择时执行此操作,那么您需要使用javascript(jQuery是一种好方法)来响应这些选择中任何一个的onChange事件

如果只想在提交表单时执行此操作,还可以使用javascript(特别是jQuery)作为onsubmit事件的常规表单验证的一部分


如果您希望在使用表单值在数据库中存储内容之前执行此操作,那么在用户选择内容并点击Submit之后,您也可以使用php执行此操作。但是,您实际上根本不需要隐藏值,您可以在提交表单后在php中创建它。

这里是

您有两个选择,名称相同“element2”。php是后端,jquery是前端。您是要在屏幕初始加载时设置输入值还是在前端动态设置输入值?很抱歉,我的需要在输入类型中添加一个a id=“myNumbers”。这是一个很好的答案,只需将该逻辑包装在$('select').change()中,您就是golden。编辑以显示更改()事件,并且还要迭代页面上的每个select元素…我很无聊lol
var select = document.getElementById('#element1');
var index = select.selectedIndex;