我有一个jsp页面,其中有很多选项使用 jQuery 填充,即他们有<option>
个标签,他们只是通过一个函数获取它。每个选择每个都有30个选项。
<form id="target" name="target" action="/project/myservlet" method="get">
<select class="myClass" id="sel1" name="sel1" ></select>
<select class="myClass" id="sel2" name="sel2"></select>
...
</form>
我使用request.getParameter("sel1")
在我的servlet中收到了这些值,但是对于更改的选择,我得到null。就像我说的那样,我从第2,第4和第5选择中选择值,然后这些选择在servlet中获取空值。其他人获得第0个值(默认值和未更改) - 这没关系。
This可以帮助解释我的问题。当我修改select时,我在下一页中得到null。
根据这一点,如果我在select中使用onload
,则有助于将更新的值带到ONE select的下一页。但问题是我不只是在页面上有一个选择。我希望更新的值在没有页面刷新/转到另一页的情况下进入下一页,除非单击提交它们。我认为在更改发生时请求没有得到更新?即使是“get”中的url也没有获得更改的选择。
没有这样的错误,只是如果选择未经修改我会得到值(默认值)。它将默认值发送到下一页。当我从下拉列表中选择另一个选项时,我在servlet上得到null,除非我使用onchange
提交表单。但这对我来说不起作用,因为我有很多选择。我不能继续提交表格,并在每次选择更改时转到下一页。
编辑: 如果有帮助,这是我的jQuery代码:
$(document).ready(function() {
$('select').change(function(){
var v = $(this).val();
$('select option[value="'+$(this).data('old-val')+'"]').prop('disabled', false);
$(this).data('old-val',v);
if(v != "0"){
$('select option[value="'+v+'"]').not(this).prop('disabled',true);
}
});
$('select').each(function(idx,select){
var stateArray = ["Preference No. "+(idx+1),"Bill", "Sally", "Alice"];
$.each(stateArray, function(iIdx, iItem){
$(select).append('<option value="'+iIdx+'">'+iItem+'</option>');
});
});
$( "#target" ).submit(function( event ) {
alert( "Handler for .submit() called." );
});
});
编辑2:Servlet: public class Preference扩展了HttpServlet {
protected void processRequest(HttpServletRequest request, HttpServletResponse response) {
response.setContentType("text/html;charset=UTF-8");
try {
PrintWriter out = response.getWriter();
String sel = request.getParameter("sel1");
}catch(Exception e){ }
}
}
答案 0 :(得分:0)
您需要在<option>
代码中添加<select>
代码。
每个<option>
必须具有value
属性,如下所示:
<option value="3">Apple</option>
所选选项的value
属性中的值将是<select>
的值。您将像往常一样通过name
在服务器端获取它。
答案 1 :(得分:0)
我的jQuery中的所有select元素都禁用了所选的选项。我不得不稍微修改jQuery。残疾元素不以表格形式转发。在修改jQuery以禁用选项时,问题得到了解决。不得不采取一些帮助来识别并纠正这一点。