在我的网络应用程序中,我有一个包含两个<select>
的表单。
一个代表月份,另一个代表一年。
<form id="reportform" target="_blank">
<table cellpadding="3" cellspacing="14">
<thead>
<th class="report" colspan="2"><spring:message code="label.month"/></th>
<th class="report" colspan="2"><spring:message code="label.year" /></th>
<th colspan="2"></th>
</thead>
<tbody>
<tr>
<td>
<input name="centerId" value="${center.centerId}" type="hidden">
</td>
<td class="date">
<select class="select-input-month-report" id="select-input-month" name="month">
<option selected="selected" value="0"><spring:message code="label.select" /></option>
<option value="1"><spring:message code="label.january" /></option>
<option value="2"><spring:message code="label.february" /></option>
<option value="3"><spring:message code="label.march" /></option>
<option value="4"><spring:message code="label.april" /></option>
<option value="5"><spring:message code="label.may" /></option>
<option value="6"><spring:message code="label.june" /></option>
<option value="7"><spring:message code="label.july" /></option>
<option value="8"><spring:message code="label.august" /></option>
<option value="9"><spring:message code="label.september" /></option>
<option value="10"><spring:message code="label.october" /></option>
<option value="11"><spring:message code="label.november" /></option>
<option value="12"><spring:message code="label.december" /></option>
</select>
</td>
<td></td>
<td class="date">
<select class="select-input-year-report" id="select-input-year" name="year">
<option value="0" selected="selected"><spring:message code="label.select" /></option>
<option value="2013">2013</option>
<option value="2014">2014</option>
</select>
</td>
<td align="right">
<input id="go" class="go" type="submit" value="Report">
</td>
</tr>
</tbody>
</table>
</form>
在服务器端,根据在UI上选择的月份和年份生成PDF(使用iTextPdf
)。
当月份和年份正确时,PDF会正确生成,但是当用户没有选择正确的月份和年份(其中一个为零)时,我的后端会出现错误。
我想使用javascript代码检查月份或年份是否与0不同,并尽量减少@Controller
中的更改。但我无法检查月份和年份的值,并使用document.reportform.action
调用后端服务。
@Controller
public class ReportController {
@RequestMapping(value="/report.pdf", method=RequestMethod.POST)
public ModelAndView getPdfReport(@ModelAttribute ReportRequest request) throws DAOException {
...
return mav;
}
}
我打电话给这样的服务:
$(function(){
$('form').submit(function(){
var zeros = checkDate();
if(zeros == '0'){
document.reportform.action = "/report.pdf";
}
});
});
function checkDate(){
var zeros = 0;
if(document.getElementById("select-input-month").value == 0){
zeros++;
}
if(document.getElementById("select-input-year").value == 0){
zeros++;
}
return zeros;
}
帮助将不胜感激。
更新
我收到Javascript错误:document.reportform.action = "/report.pdf" not defined.
答案 0 :(得分:0)
<form id="reportform" target="_blank" method="post">
$(function(){
$('form').submit(function(e){
var zeros = checkDate();
if(zeros == '0'){
$(this).attr("action","/report.pdf");
}
else{
e.preventDefault();
alert('Select month and year');
}
});
});
小提琴:http://jsfiddle.net/URfkN/1/
@Controller
public class ReportController {
@RequestMapping(value="/report.pdf", method=RequestMethod.POST)
public ModelAndView getPdfReport(@ModelAttribute ReportRequest request, HttpServletRequest httpRequest) throws DAOException {
String month = httpRequest.getParameter("month");
String year= httpRequest.getParameter("year");
....
return mav;
}
}
答案 1 :(得分:-1)
使用JQuery非常简单:
$(function(){
$('form').submit(function(e){
e.preventDefault();
if($("#select-input-month").val()=='0' || $("#select-input-year").val()=='0')
{
document.reportform.action = "/report.pdf";
}
});
});