_jsonDataGetValue=function(elmt,container){
var format=elmt.attr("format"),type=elmt[0].type;
if(type=="radio"){
return elmt[0].checked ? elmt[0].value : (elmt.attr("uncheckvalue")|| "");
}else if(type=="checkbox"){
var isArray=elmt.attr("isArray");
var split=elmt.attr("split")|| ",";
var values=[];
var chks=container.find("input[name='"+elmt[0].name+"']:checked");
for (var i=0; i < chks.length; i++) {
values.push(chks[i].value);
};
return isArray ? values : values.join(split);
}esle if(format=="date" || format=="datetime"){
}else{
return elmt.val();
}
}
/**
*@param {jqDom} elmt
*@param {String} value
*/
_jsonDataSetValue=function(elmt,value){
var tagName=elmt[0].tagName,type=elmt[0].type;
if(tagName=="LABEL"){
elmt.text(value);
}else if(type=="radio"){
(value==elmt[0].value) ? (elmt[0].checked=true) : elmt.removeAttr("checked");
}else if(type=="checkbox"){
if(value !==null){
var values=(""+value).split(elmt.attr("split") || ",");
for (var i=0; i < values.length; i++) {
if(values[i]==elmt[0].value){
elmt[0].checked=true;
return;
}
};
elmt.removeAttr("checked");
}else{
elmt.removeAttr("checked");
}
}else{
elmt.val(value);
}
}
/**
* 拿到本dom容器中的所有输入元素(:input)的value,根据元素name 生产一个json格式的数据集对象返回。
* 或将一个json格式的数据对象填充或绑定的本dom容器form元素中
* @param {Object} data 需要填充或绑定到本dom容器元素中 的数据
*/
$.fn.jsonData=function(data){
//声明将要用到的变量
var elmtName,elmtValue,elmt,elmts=this.find(":input[name]").toArray();
//判断是否传递了用于填充的数据对象
if(data && typeof data=="object"){
//如果传递了 data参数,则将data中的数据绑定到容器中的form元素中
elmts=elmts.concat(this.find("label[name]").toArray());
for(var i=0;i<elmts.length;i++){
elmt=$(elmts[i]);
elmtName=elmt.attr("name");
//根据elmtName取出data中相对应得数据
try{elmtValue=eval("data."+elmtName);}catch(e){}
if(typeof elmtValue!="undefined"){
_jsonDataSetValue(elmt,elmtValue);
}
}
return this;
}else{
//如果没有任何参数,则需取出容器中的输入元素值,根据其name封装成对象返回
//用户缓存已经 设置或读取过的 name 属性,(相同name元素在同一次jsonData操作中的不会读取第二次)
var currObj={};
var cache={};
for(var i=0;i<elmts.length;i++){
elmt=$(elmts[i]);
elmtName=elmt.attr("name");
if(cache[elmtName]){
//如果该同名元素已经读取过,将跳过该元素
continue;
}
var attrs=elmtName.match(/[a-zA-Z0-9_]+/g);
for (var j=1; j < attrs.length-1; j++) {
if(typeof currObj[attrs[j-1]]!="object"){
if(isNaN(attrs[j])){
currObj=currObj[attrs[j-1]]=currObj[attrs[j-1]] || {};
}else{
currObj=currObj[attrs[j-1]]=currObj[attrs[j-1]] || [];
}
}
};
var lastAttr=attrs[attrs.length-1];
if(!isNaN(lastAttr)){
lastAttr=parseInt(lastAttr);
}
currObj[lastAttr]=_jsonDataGetValue(elmt,this);
//读取后,缓存该名称,下次同名元素将不再读取,直接跳过
cache[elmtName]=true;
}
return currObj;
}
}
分享到:
相关推荐
5. **处理XML数据:**在jQuery中,可以使用`$.parseXML()`函数将XML字符串解析成一个XML文档对象,然后使用`find()`或`children()`方法遍历XML节点,提取所需数据。 6. **创建选项:**根据获取的数据,我们可以使用...
AutoFillFormField 是一个专为 MediaWiki 设计的扩展,它主要功能是自动化填充表单中的输入字段。这个扩展基于 JavaScript 开发,利用了 MediaWiki 的强大功能,为用户提供了更加智能和便捷的填写表单体验。...
"jquery.form"可能是一个jQuery插件,用于增强表单处理,特别是提交表单和处理表单数据的Ajax请求,使得表单提交更加流畅,用户体验更好。 总的来说,这个压缩包提供了关于jQuery及其周边生态的多种资源,对于学习...
注意,这里假设表单字段是`<input>`元素,但你可以根据实际情况调整,适应其他类型的表单控件(如`<select>`或`<textarea>`)。 在实际应用中,可能还需要考虑一些边界情况,例如处理多个同名的表单字段,或者处理...
1. **无代码爬虫设计**:通过图形界面,用户可以选择和配置各种爬取策略,如遍历链接、填充表单、处理验证码等。 2. **自动化测试**:模拟用户操作,验证网站功能,比如登录、注册、搜索等流程。 3. **数据采集**:...
- 网页自动化:填充表单、模拟点击等操作,辅助测试或脚本编写。 - 内容迁移:将网站内容迁移到新的平台或格式。 在【764581d90e8e4cb98d749acdc3ba89bd】这个文件中,虽然具体内容未知,但通常会包含jsoup库的源...
6. **表单处理**:填充表单数据并提交。 7. **链接处理**:解析和验证链接,处理相对URL。 **应用场景** jsoup适用于多种场景,如: 1. **数据抓取**:从网页中抽取特定信息,如新闻标题、评论、价格等。 2. **...
4. **表单处理**:Jsoup可以填充和提交HTML表单,模拟用户交互,这对于自动化测试和数据提交很有用。 5. **清理和验证**:Jsoup可以清洗HTML,移除恶意脚本和无效标签,保证提取的数据安全可靠。同时,它也能验证...
3. **内容脚本**:内容脚本可以直接操作网页DOM(文档对象模型),在用户界面上进行注入元素、改变样式、提取数据等操作。在这个情况下,内容脚本可能用于识别和填充登录表单,或者与教学平台的API进行通信。 4. **...
PHP常用于构建动态交互式的网站,它支持多种数据库(如MySQL),可以处理表单数据,生成动态网页内容,实现用户登录、注册、内容管理等常见功能。这款企业网站系统可能包括了这些常见的Web应用模块。 在【压缩包子...
【LotoProVietNam-Tool-crx插件】是一款针对越南语用户设计的浏览器扩展程序,主要用于自动化处理和访问网络页面,尤其是与LD789网站相关的数据提取。这款插件能够有效地节省用户手动操作的时间,提高工作效率,尤其...
4. **页面交互**:使用 `page.evaluate()` 在浏览器上下文中执行 JavaScript,进行元素选择、点击、填充表单等操作。 5. **数据提取**:通过 `page.$eval()` 或 `page.$$eval()` 获取页面元素内容。 6. **保存或发送...
除了基本的HTML抓取,我们还可以处理更复杂的情况,如登录、填充表单、处理JavaScript动态加载的内容等。例如,对于需要登录才能访问的页面,可以使用`request`库的`form`选项发送POST请求,携带用户名和密码。对于...