我正在尝试从多个组合框中更改隐藏字段的值。
以下是示例,我想生成隐藏字段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">
答案 0 :(得分:2)
这会做你想要的......
$(function(){
var str = $('element1').val() + '|' + $('element2').val() + '|' + $('element3').val()
$("[name='myNumbers']").val(str)
})
修改强>
一个更完整的解决方案,将迭代页面上的每个选择元素
$(function(){
$('select').change(function(e){
var myNumbers = [];
$('select').each(function(){
myNumbers.push($(this).val());
})
$("[name='myNumbers']").val(myNumbers.join('|'));
});
});
答案 1 :(得分:0)
每个下拉调用updateMyNumbers函数
都必须有一个onChange函数function updateMyNumbers() {
$("#myNumbers#").val(("#element1").val() +"|"+("#element2").val()+"|"+("#element3").val());
}
答案 2 :(得分:0)
你必须使用javascript,因为php是在服务器端运行的,所以在加载页面之前或者在提交页面之后。
在文本中:您必须捕获选择框的change
事件,生成字符串并将该字符串放入隐藏元素中。
未经测试的代码:
$("select").change(function(){
var desired_value = $("[name='element1']").val() + "|" + $("[name='element2']").val() + "|" + $("[name='element3']").val();
$("[name='myNumbers']").val(desired_value);
});
答案 3 :(得分:0)
var select = document.getElementById('#element1');
var index = select.selectedIndex;
使用此代码,您可以为隐藏输入构建字符串
答案 4 :(得分:0)
如果您想在页面加载时设置一次,那么在php中进行设置是有意义的(参见上面的答案)。
如果您想在用户更改其中一个选项时执行此操作,那么您可能希望使用javascript(jQuery是一种好方法)来响应任何这些选择的onChange事件。
如果你只是想在提交表单时这样做,你也可以使用javascript(特别是jQuery)作为onsubmit事件的一般表单验证的一部分。
如果您希望在使用表单值在数据库中存储某些内容之前发生这种情况,那么一旦用户选择了内容并点击“提交”,您就可以在php中执行此操作。但是你真的根本不需要隐藏的价值,你可以在提交表格后在php中创建它。
答案 5 :(得分:0)