javascript级联下拉菜单和ajax数据验证核心代码

虽然prototype.js也写,因为它的无知,类的实现仍然在Javascript的高级编程的方式。当使用AJAX验证数据,XML最初是作为数据源。然而,经过一段时间后,XML效率太低,所以JSON被用作数据源。

一年过去了,顾客提出了新的要求。最初,只要输入框的两个数据匹配,现在就需要两个下拉菜单的数据匹配,所以我利用这个机会重新生成代码一次。

需求:
1、根据产品的下拉菜单的名称,选择产品的包装,右边的图片应相应地进行相应的修改。
2。产品名称、产品包装、生产日期和生产批次经过正确验证后,正确的图片显示相应的提示。

简要描述:
prototyp.js用来完成班级建设,面向对象的方法来实现功能,面向事件使代码更清晰明了,使用Ajax的状态管理,使验证过程对用户更友好。JSON也是一个令人满意的数据执行效率来源。
链接下拉列表和Ajax验证
这个js脚本对我有特殊的意义。
一年前我有了一个新的开始,第一个任务是解决这个链接下拉列表和数据验证。那时我对Javascript没有深刻的理解。以我的学习能力,在参考了同事的守则之后,我终于在几天内完成了学业。
虽然我用js代码,我仍然使用的方法在弥补类。在ajax验证过程中,我在开始时使用了XML作为数据源。面对过去的时间,我改变了数据源的XML到JSON XML的低效率。
现在客户机有了新的需求,他们需要四个数据
要求:
1。产品名称和包装改变后的产品形象。
2。经过产品名称、包装、日期、批次、变更图像的验证
简介:
构建类prototype.js,利用面向对象的方法和事件管理使
Ajax状态的管理让这个过程更加友好
核心代码|核心代码:
复制代码代码如下所示:
VaR的有效的产品= class.create();
validproduct.prototype = { {
初始化:功能(proddata,validdataurl,validdata,prodtype,prodpack,proddate,prodpatch,prodimg,validbtn,validmsg){
this.proddata = $ H(proddata); / /产品类型数据|产品类别的数据
this.validdataurl = validdataurl; / /产品数据的URL |验证数据路径
this.validdata = validdata; / /产品数据|验证数据
this.prodtype = $(prodtype); / /产品类型分类|产品验证
this.prodpack = $(prodpack); / /产品包装|包装产品验证
this.proddate = proddate; / /标识生产日期|日期产品验证
this.prodpatch = prodpatch; / /身份验证批次产品批量|产品
this.prodimg = $(prodimg); / /产品图片|图片产品验证
this.validbtn = $(validbtn); / /验证按钮|产品验证
this.validmsg = $(validmsg); / /验证消息提示|产品验证过程
This.init();
},
初始化:功能(应用程序初始化){ / /程序初始化|
This.productTypeBind();
this.prodtype.observe(变化
this.prodpack.observe(变化
this.validbtn.observe(单击
},
(producttypebind:功能){ / /结合产品类别下拉列表|结合产品类型数据
this.prodpack.selectedindex = 0; / / IE页面刷新后
var o = this.prodtype;
this.proddata.each(功能(双){)
O.options.add(新的选项(pair.key,对。价值。代码));
});
},
ProductTypeChange:功能(e){ / /产品类别下拉列表上的产品类型|事件监听器
var o = this.prodpack;
o.length = 1;
o.selectedindex = 0; / / IE包装后选择第一
this.prodimg.writeattribute(src
选择= this.prodtype.selectedindex VaR;
如果(选择)!= 0){
This.productPackBind(这个。prodtype {选择}。文本);
}
},
ProductPackBind:功能(choosedvalue){ / /结合产品包装产品包装|绑定数据下拉列表数据
var o = this.prodpack;
$ H(this.proddata.get(choosedvalue)。Type)。每个(功能(双){)
无功newoption =新的选项(pair.key,对。价值。包装);
newoption.id = pair.value.img;
O.options.add(newoption);
});
},
ProductPackChange:function (E) {// product packaging drop-down list | Eventlistener of product package event
var o = this.prodpack;
this.prodimg.writeattribute(src
},
productvalid:功能(验证产品){ / /产品验证|
VaR V1 = $(这个。proddate)。Strip(),V2 = $(这个。prodpatch)Strip();
如果(V1)!= V2!){
如果(this.prodpack.selectedindex!= 0){
无功validajax =新的Ajax请求(this.validdataurl,{
方法:获取
参数:RND =+ Math.random(),
OnCreate:函数(){
This.validMsg.show();
}绑定(此),
OnComplete:这_validprod.bind(本)。
});
其他{ }
提醒(请选择产品和包装)!;
}
其他{ }
请填写生产日期和产品批号!;
}
},
_validprod:功能(oreq AJAX回调){ / /产品验证
this.validmsg.hide();
VaR V1 = this.prodtype.getvalue(),V2 = this.prodpack.getvalue();
VaR V3 = $(这个。proddate)。Strip(),V4 = $(这个。prodpatch)Strip();
无功imgurl =这。prodpack {这。prodpack ID。SelectedIndex };
/ /警报(V1 +n+V2 + V3 +n+ V4 +n+ imgurl);
无功prodbatchs = oreq.responsetext.evaljson(){ }。validdata;
VaR结果= prodbatchs.any(功能(一){
返回(V3 = =一个{ 1 } V4 = =一个{ 0 }一{ 2 }。从(V1)V2 = =一个{ 3 });
});
如果(结果){
this.prodimg.writeattribute(src
其他{ }
this.prodimg.writeattribute(src
};
}
}
document.observe(DOM加载:
var =新的有效的产品(prodtypedata有效酮为底物,数据 / batchs_new2 .txt
productpack
});