关于表单项更新检测,后台按需更新
今天有个人问到这个,用来检测当前表单项哪些值需要更新,后台按需更新。
突然发现这个东东貌似还真有点用,按那位朋友在网上找到的代码做了些修改。
只要把得到的tips中的连接符&换成,号,岂不是就是一条update语句出来了。。
大家瞅瞅,这鬼东东严谨不?会不会一用这东东就又多出个漏洞来。暂时木有想到
突然发现这个东东貌似还真有点用,按那位朋友在网上找到的代码做了些修改。
只要把得到的tips中的连接符&换成,号,岂不是就是一条update语句出来了。。
大家瞅瞅,这鬼东东严谨不?会不会一用这东东就又多出个漏洞来。暂时木有想到
<script type="text/javascript">
Array.prototype.inArray=function (value){for (var i=0;i<this.length;i++){if (this[i] == value){return true;}}return false};
function IsFormChanged(el) {
var tips="";
var arr1=new Array();
var arr2=new Array();
var isChanged=false;
var itemVal='';
var form = document.getElementById(el);
for (var i = 0; i < form.elements.length; i++) {
var element = form.elements[i];
var type = element.type;
switch(type){
case "text":
case "hidden":
case "textarea":
case "button":
tips += (element.value != element.defaultValue)?tips.length==0?element.name+"='"+escape(element.value)+"'":"&"+element.name+"='"+escape(element.value)+"'":"";
break;
case "radio":
if(!arr1.inArray(element.name)){
arr1.push(element.name);
var myRadio=document.getElementsByName(element.name);
for(var k=0;k<myRadio.length;k++){
tips += (myRadio[k].checked && !myRadio[k].defaultChecked)?tips.length==0?myRadio[k].name+"='"+myRadio[k].value+"'":"&"+myRadio[k].name+"='"+myRadio[k].value+"'":"";
}
}
break;
case "checkbox":
if(!arr2.inArray(element.name)){
arr2.push(element.name);
isChanged=false;
var myBox=document.getElementsByName(element.name);
itemVal='';
for(var k=0;k<myBox.length;k++){
if(myBox[k].checked){//当前checkbox被选中
if(!myBox[k].defaultChecked){isChanged=true}//是否与初始状态不同,如果是则标记为当前checkbox需更新
itemVal += itemVal.length==0?myBox[k].value:","+myBox[k].value;//同一name追加值
}else{
if(myBox[k].defaultChecked){
isChanged=true;//初始化时为选中状态但当前未选中,标记该复选框组值需更新
}
}
}
if(isChanged){itemVal=element.name+"='"+itemVal+"'";tips+=tips.length==0?itemVal:'&'+itemVal}
}
break;
case "select-one":
for (var j = 0; j < element.options.length; j++) {
tips += (element.options[j].selected && !element.options[j].defaultSelected)?tips.length==0?element.name+"='"+element.value+"'":"&"+element.name+"='"+element.value+"'":"";
}
break;
case "select-multiple":
isChanged=false;
itemVal='';
for (var j = 0; j < element.options.length; j++) {
if(element.options[j].selected){
if(!element.options[j].defaultSelected){isChanged=true}//是否与初始状态不同,如果是则标记为当前select需更新
itemVal +=itemVal.length==0?element.options[j].value:","+element.options[j].value;//同一个元素只追加值
}else{
if(element.options[j].defaultSelected){
isChanged=true;//初始化时为选中状态但当前未选中,标记该select值需更新
}
}
}
if(isChanged){itemVal=element.name+"='"+itemVal+"'";tips+=tips.length==0?itemVal:'&'+itemVal}
break;
}
}
tips.length==0?alert('没有更新项'):alert(tips);
}
</script>
<form id="chageform" action="">
text:<input type="text" name="txt1" value="1"/><br />
myBox:<input type="checkbox" name="myBox" checked="checked" value="1"/>
<input type="checkbox" name="myBox" value="2"/>
<input type="checkbox" name="myBox" value="3"/><br />
myBox2:<input type="checkbox" name="myBox2" checked="checked" value="4"/>
<input type="checkbox" name="myBox2" checked="checked" value="5"/>
<input type="checkbox" name="myBox2" value="6"/><br />
myRadio:<input type="radio" name="myRadio" checked="checked" value="1"/>
<input type="radio" name="myRadio" value="2"/><br />
myRadio2:<input type="radio" name="myRadio2" value="1"/>
<input type="radio" name="myRadio2" checked="checked" value="2"/><br />
mySel:<select name="mySel">
<option value="1" selected="selected">1</option>
<option value="2">2</option>
</select><br />
mySel2:<select name="mySel2">
<option value="1">1</option>
<option value="2" selected="selected">2</option>
</select><br />
mySel3:<select name="mySel3" multiple="multiple" style="width:50px;">
<option value="1">1</option>
<option value="2" selected="selected">2</option>
<option value="3">3</option>
<option value="4" selected="selected">4</option>
<option value="5">5</option>
</select><br />
mySel4:<select name="mySel4" multiple="multiple" style="width:50px;">
<option value="1">1</option>
<option value="2" selected="selected">2</option>
<option value="3">3</option>
<option value="4" selected="selected">4</option>
</select><br />
<input type="button" value="检测" onclick="IsFormChanged('chageform')" />
</form>
...全文
相关推荐
后台下载更新APP
- 需要请求更新APP的服务器API,获取最新的APK文件的URL。 - 还要考虑网络状态的检测和处理,如连接丢失时暂停下载,重新连接后恢复。3.
15、表单选择检测与动态更新全解析
本文详细解析了网页开发中表单选择检测与动态更新的实现方法,涵盖选择列表和单选按钮的创建、选择检测、动态更新等内容,并通过实例展示了如何提升表单交互性与用户体验。同时,还提供了实际应用案例和优化技巧,帮助开发者构建更智能的Web表单。
Android 用Service+OKHttp实现应用后台检测更新示例代码.rar
该项目通过Service结合OKHttp实现了Android应用在后台静默检测版本更新的功能。利用Gradle构建系统管理依赖,采用OkHttp进行网络请求获取最新版本信息,并通过Service保证长
JavaScript表单验证实例之验证表单项是否为空
在这个实例中,我们学习了如何使用JavaScript检测表单字段是否为空,并给出了两种不同的实现方法。
Android软件检测更新
在Android平台上,应用程序的检测更新是一项关键功能,它确保用户能够获取到最新的功能、修复和安全补丁。本文将深入探讨如何实现Android软件的自动检测更新机制。


