美文网首页JavaEEJAVA人生程序员
成也前台,败也前台

成也前台,败也前台

作者: 汪猿望缘 | 来源:发表于2017-09-10 12:11 被阅读80次
举个栗子

【不得不引起重视的前端技术】

*后台必须懂前端,这样开发速度就会快些,项目开发中刚开始写后台代码速度很快,但到了前端的时候就会减慢速度,原因是页面太多太杂,稍不留神就会把页面搞乱。

*前端:不必理解原理,只需要学会怎么用达到我想要的效果。

【页面代码分析思路】

*首先根据对应的链接找到对应的页面

*两个部分,html和js在html中找到按钮,在js中找到对应的函数方法。

*主要是通过dom或者jquery操作js里面的代码。js请求一个路径传给后台,异步同步的都有,之后后台操作,响应回结果。通过dom或者jquery影响着页面的样式和数据,完成和用户的交互。

*html代码部分主要用于取值和进行一定的渲染。通常都是用el表达式和其他标签库的标签进行赋值,还有就是一些写入时的提示,推荐用onblur函数提升用户体验,一次性输入正确就好。js主要用户逻辑的判断和取值,异步请求需要返回结果,然后通过页面进行渲染。

*不要被class div body id span tbody style 等一些不重要的标签吸引,看重点。

【页面】

从后台返回json到页面展示 越小越好,这样能显著提高页面打开速度,提升客户体验。

页面调试中值得注意的是如果有一点点代码执行不了,那么它下面的代码就无法执行,需要逐行调试。

页面才是java才发的重中之重,页面通过链接和后台取得联系,后台根据前台的参数进行处理,从数据库中查到需要的资源,返回给页面。页面再对数据进行处理,遍历出数据或者显示出数据。

开发中完成一个小功能最好进行测试,这样虽然看上去费时间,但是这为你以后调试节省了很多时间,还有就是边写代码边写注释,这样能保证思维清晰。

【光标定位】

比如要定位的文本框为,那么可以在页面加载完成之后,加上如下代码:

$('#input').focus();     这样光标就停在文本框内了。

【点击输入框选中里面的数据】onfocus="this.select()"

【动态增加删除一行表格行案例】

var i=10;

function plus(){ //动态增加一行

var plus=Number(i+1);

"+plus+"

center;\">

class=\"icon-plus-sign\">

class=\"icon-remove-sign\"

onclick=\"delTr('tr"+plus+"')\">";

id=\'name"+plus.toString()+"' name=\'name\'

onclick=\'com("+plus.toString()+")\'

style=\'width:200px;\'/>";

style=\"width:120px;text-align:center;\" readonly />";

id=\'area"+plus.toString()+"' name=\'area\' style=\'width:120px;\'

onclick=\'searchPlace("+plus.toString()+")'\ />";

onfocus=\'this.select()\' name=\'itemNum\'

style=\'width:120px;text-align:right;\'

onblur=\'formatNum(this)\'/>";

name=\'buyPrice\' style=\'width:120px;text-align:right;\'

onblur=\'formatNum(this)\'/>";

name=\'plusrate\' style=\'width:120px;text-align:right;\'

/>";

name=\'salePrice\' style=\'width:120px;text-align:right;\'

onblur=\'formatNum(this)\'/>";

name=\'fph\' style=\'width:120px;\' />";

id=\'bat"+plus.toString()+"'\" name=\'batchNum\' style=\'width:120px;\'

readonly />";

style=\'width:120px;text-align:center;text-indent:0;\' class=\'Wdate\'

type=\'text\' onKeyUp=\'WdatePicker()\'

onclick=\'WdatePicker()\'/>";

tr+="";

$("#tbody").append(tr);

i++;//记得在这里i的值已经变了

}

function delTr(id){ //动态删除一行

$("#"+id).parent().remove();

}

【校验一个表单中的多行数据是否为空】

*获取当前行,第一列数据必须有,

*如果第一列没有数据,不判断其他字段是否为空

*如果第一列有数据,判断是否为空。如果为空就返回让用户检查,否则就提交。

$("#myTable02tr").each(function(){  //非空检验方法

if(i==1&&$(this).find("input[name='name']").val()==''){

alert("第"+i+"行物品名称不能为空!");

flag=2;

return false;

}

if($(this).find("input[name='name']").val()==''&&$(this).find("input[name='unit']").val()==''

&&$(this).find("input[name='norms']").val()==''&&$(this).find("input[name='area']").val()==''

&&$(this).find("input[name='itemNum']").val()==''&&$(this).find("input[name='buyPrice']").val()==''

&&$(this).find("input[name='plusrate']").val()==''&&$(this).find("input[name='salePrice']").val()==''

&&$(this).find("input[name='effDate']").val()==''){

}else if($(this).find("input[name='name']").val()!=''&&$(this).find("input[name='unit']").val()!=''

&&$(this).find("input[name='norms']").val()!=''&&$(this).find("input[name='area']").val()!=''

&&$(this).find("input[name='itemNum']").val()!=''&&$(this).find("input[name='buyPrice']").val()!=''

&&$(this).find("input[name='plusrate']").val()!=''&&$(this).find("input[name='salePrice']").val()!=''

&&$(this).find("input[name='effDate']").val()!=''){

}else{

alert("第"+i+"行不能为空!");

flag=2;

return false;

}

i++;

});

if(flag=='1'){

$("#form").removeAttr('action');

$("#form").attr('action','${path}/store/storeAction_saveTemp.action');

$("#form").submit();

alert("恭喜,提交保存成功!");

return;

}

})

【EL表达式的格式化问题(保留两位小数)】

<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>

【jquery发送异步请求的方式】

$.ajax({

type:"post",

dataType:"html/json",

url:'路径',

data: dataurl,

success: function (data) {

//返回函数操作

}

}

});

$.post("路径", {"参数1": 参数值1,"参数2": 参数值2}, function (data) {

//返回函数操作

}

});

$("#form-id").ajaxSubmit({

dataType:"json",

data:{

'rid': rid

},

success:function (data) {

//返回函数操作

}

});

【拼音码动态检索技术案例】

function searchKsRecord(reserNo){

$('#pager').sjAjaxPager({

url:"路径,

pageSize: 10,

pageIndex: 1,

searchParam:{

},

beforeSend:function(){},

success:function(msg){

$("#tab2").empty();

var s="";

$.each(eval(msg.a),function(n,value){

var c=n+1;

//请求后把结果遍历出来 拼接成表格

"+value.name+""

"

style='text-align:right;'>"

style='text-align:right;'>"

";

if(value.fph==null){

s+="";

}else{

s+=value.fph;

}

";

if(value.batchNum==null){

s+="";

}else{

s+=value.batchNum;

}

"+value.effDate+"

});

$("#tab2").append(s);

},

complete: function(){}

});

}

【操作多个复选框】

function ysjw(){ //点击以上均无 清空其他选项

if($("#ys").prop("checked")){   //判断id为“ys”的复选框是否被选中了

var duo=document.getElementsByName("bingStyle.dieaseHistory");

for (var i = 0; i < duo.length-1; i++) {

duo[i].checked=false;

duo[i].setAttribute("disabled","disabled");

}

}else{

var duo=document.getElementsByName("bingStyle.dieaseHistory");

for (var i = 0; i < duo.length-1; i++) {

duo[i].checked=false;

duo[i].removeAttribute("disabled");

}

}

}

【操作checkbox和radio常用方法】

*jquery根据后台传来的值让radio选中

var sex = result.resultContent.gender;

$(":radio[name='rbsex'][value='" + sex + "']").prop("checked", "checked");

意思是让name等于rbsex,value等于sex 的radio值选中

*jquery 让radio不能选中:$("#male")[0].checked = false;

参考:  设置 radio 不可用可以用 attr() 方法,即attr("disabled", true)。

设置 radio 的选中状态也是用 attr() 方法,attr("checked",true)。

【重置一个表单】

document.表单name.reset();

【获取到当前时间的年月日】

var oDate = new Date(); //实例一个时间对象;

$("#thesz_n").val(oDate.getFullYear());

if((oDate.getMonth()+1).toString().length==1){ //判断月份是否是一位数,是的话前加“0”

$("#thesz_y").val("0"+(oDate.getMonth()+1));

}else{

$("#thesz_y").val(oDate.getMonth()+1);

}

if((oDate.getDate()).toString().length==1){ //判断日是否是一位数,是的话前加“0”

$("#thesz_r").val("0"+(oDate.getDate()));

}else{

$("#thesz_r").val(oDate.getDate());

}

【js和jquery的赋值】

js:    添加属性 节点.setAttribute("属性名","属性值");

移除属性 节点.removeAttribute("属性名","属性值");

节点一般通过document.get...By()获取

jquery:  添加属性 $("id").attr("属性名","属性值");   //id 是任意选项框的id

移出属性 $("id").removeAttr(“元素名”);//根据id移除某元素

$(this).val();==$(this).attr("value");

统一设置属性:$("input,textarea").attr("readonly","readonly");

【身份证正则表达式】

var reg=/^[1-9]{1}[0-9]{14}$|^[1-9]{1}[0-9]{16}([0-9]|[xX])$/;

【页面打印模板】

function doPrint(nr) {

var dy=$("#page1").html(); //获取到要打印的页面

var LODOP; //声明为全局变量

//以下是把修饰打印页面的js引入

var strStyleCSS="

href='${path}/common/jquery-easyui-1.4.3/themes/default/easyui.css'>";

strStyleCSS+="

href='${path}/common/jquery-easyui-1.4.3/themes/icon.css'>";

strStyleCSS+=" ";

strStyleCSS+=" ";

strStyleCSS+="";

var sstr=""+strStyleCSS+""+dy+"";

LODOP = getLodop();

LODOP.PRINT_INIT("");

//LODOP.PRINT_INIT("打印控件功能演示_Lodop功能_表单一");

LODOP.SET_PRINT_PAGESIZE(1,0,0,"A4");//横向打印

LODOP.ADD_PRINT_HTM(0,0, "100%","100%",sstr);//打印的各项设置 sstr是打印的最终页面

if(nr=='打印预览...'){

LODOP.PREVIEW();

}else{

LODOP.PRINT(); // 直接打印,不弹出打印机设置对话框

}

}

相关文章

  • 成也前台,败也前台

    【不得不引起重视的前端技术】 *后台必须懂前端,这样开发速度就会快些,项目开发中刚开始写后台代码速度很快,但到了前...

  • 成也败也

    以前,你在网上寻找想要的答案。 现在,网络给于不劳而获的快感。 每个人都在网络上展现自己的好的一面,尽量隐藏差的一...

  • 前台

  • 前台

    在目前这家公司干了快两年,有件事一直挺闹心,憋不住念叨念叨。这事儿跟工作本身倒没啥关系,得从公司所在的写字楼结构说...

  • 前台

    前台就好比一个城市,国家对外开放宣传的重点窗口,是吸纳与引流的重要启始 你的一言一行,举手投足,服务态度,业务熟练...

  • 前台

    这家新开业的琴行,宽敞明亮,除了老板,就是四五名年轻老师,闲暇时间你弹我奏,我唱你随,好不快乐。 家长们也备受感染...

  • 前台

    去游泳,刷卡。 三个人都刷不进去。 前台就看着。 最后,一个老人说能不能把门打开,那个前台才动了动手指。 同样的情...

  • 成也,败也,锋棱也

    我是一个非常锋利的人。 我像一把刀,一柄剑,也像匕首,有鞘的那种。我虽然决绝又偏执,但我表面很正常,不了解我的人看...

  • spring boot 自定义jsckson null转换成空字

    在spring boot中,默认配置使用jackson,对象的null值也会被解析成null输出到前台,我们需要把...

  • 成也风流败也风流

    “是真名士自风流。” 这句话徐志摩绝对是当得起的。 看徐志摩一生,可以用“吾爱孟夫子,风流天下闻。”(李白《赠孟浩...

网友评论

    本文标题:成也前台,败也前台

    本文链接:https://www.haomeiwen.com/subject/mnbzjxtx.html