$(function(){
$("#toPage").blur(function(){
var num = parseInt($("#toPage").val());
if(num != null && num != ""){
if(!/^[1-9][0-9]*$/.test(num)){
alert('请输入正确的页号!');
}else{
$("#pageVal").attr('href',"<%=basePath %>/goods/allGoods?pageNo=${page.pageNum+num}");
}
}
});
});
在浏览器按F12看值的时候,只有${page.pageNum}的值,而num的值没有加上去,如果这样写${page.pageNum+num-1},就自动忽略+num,直接就执行-1了。因为我在做pagehelper的分页,我想可以直接跳转到指定的页号,所以我就直接获取到input输入框里面的值,然后直接加到${page.pageNum}上。如果在url后面的值写成pageNo=num就报400,希望大牛能帮我解决一下,不胜感激。
你要不就用el表达式的赋值方式把num赋值成el表达式的样式,要不就在js里面先把${page.pageNum}+num的值求出来,不是用${page.pageNum+num},而是用${page.pageNum}+num。${}里面取的是el表达式里面的属性值,而num是js里面的变量,所以在${}里面肯定取不到num的值啊。
el 和js解析顺序问题,
我先介绍一下请求处理顺序,然后告诉你错在哪里
1、服务器接收到请求
2、将被请求的接收jsp文件件加载到内存
3、读取识别 el 表达式,渲染页面 (此时你的 js 就是普通的文本,不能运行)
4、将渲染完成后页面发送给客户端
5、客户端接收到页面 执行js(此时 el表达式由于已经被服务器解析完成 在这阶段el表达式不存在)
简单解释一下 就是 el 表达式与js不能混编
执行顺序为 服务器 先执行 el模板渲染 客户端后执行js
你的问题是将js变量写入了el中 el在解析的时候 js未执行 故产生错误 无法取到 num的值,
解决方案同楼上
试下
$(function(){
$("#toPage").blur(function(){
var pageNum = "${page.pageNum}";
var num = parseInt($("#toPage").val());
if(num != null && num != ""){
if(!/^[1-9][0-9]*$/.test(num)){
alert('请输入正确的页号!');
}else{
$("#pageVal").attr('href',"<%=basePath %>/goods/allGoods?pageNo="+(parseInt(paegNum)+num));
}
}
});
});