应为现在的项目需求问题,js比较复杂,所以我的js就分开写了
<script language="javascript" type="text/javascript" src="static/js/followupjs/followup.js"></script>//单击提交时的保存操作
function drugmainjs() {
var codestr = "";
var valuestr="";
var drugsvaluestr = "";
var variablestr="";
var myDate = new Date();
var s = myDate.getTime();
var test = document.mainForm.Sf_Date.value; //测试得到了随访时间的值
var f = document.mainForm; //得到表单对象
var hashMap=new HashMap();
for(var j=0;j<f.length;j++){
hashMap.put(f[j].id,f[j]);
}
//保存当前模块中的数据
for(var i=0;i<vcodes.length;i++){
var mView = document.mainForm.mname;
var m = document.mainForm.mname.value; //模块名称
var eDiv = document.getElementById("div_"+vcodes[i]);
//将界面所有显示着的变量code拼成字符串
if(eDiv){
if(eDiv.style.display=='block'){
variablestr+=vcodes[i]+";";
}
}
if(vmodes[i]==m){
if(hashMap.get(vcodes[i]).type=="text"){//输入题或日期时间题或日期题或下拉列表题
if(hashMap.get(vcodes[i]).value!=""){//表单对象value有值
idstr+=vids[i]+";";//将变量id拼成字符串
//codestr+=vcodes[i]+";";//将变量code拼成字符串
codestr+=vcodes[i]+",";//将变量code拼成字符串
valuestr+="'"+hashMap.get(vcodes[i]).value+"'"+",";//将变量value拼成字符串
}else{//表单对象value无值
if(mView.style.display!='none'){//20120330lyd模块div显示
if(eDiv){
if(eDiv.style.display=='block'){
alert(vcnames[i]+"\n不能为空");//20120408lyd新增
return;//20120408lyd新增
}
}
}
}
}else if(hashMap.get(vcodes[i]).type=="radio"){//单选题
if(mView.style.display!='none'){//20120330lyd
if(eDiv){
if(eDiv.style.display=='block'){
if(isRadio(hashMap.get(vcodes[i]).name)==""){//name为f[j].name的一组单选按钮全部没有选中
for(var h=0;h<tcodes.length;h++){
if(hashMap.get(vcodes[i]).name==tcodes[h]){
alert(tcnames[h]+"\n不能为空");//提示单选的文本题目不能为空
return;
}
}
}
}
}
}
if(hashMap.get(vcodes[i]).checked){ //单选选中
//如果用药单选题选中是,则进行药品名称的逻辑判断
var y = isRadio(hashMap.get(vcodes[i]).name);
if(y==2){
//详细药品名称的判断
var vcode = vcodes[i].split('_');
for(var k=0;k<drugs_did.length;k++){
var drugs = hashMap.get(drugs_did[k]).name.split('_');
if(vcode[1]==drugs[1]){
if(isCheckbox(hashMap.get(drugs_did[k]).name)==""){//name为f[j].name的一组多选按钮全部没有选中
//for(var h=0;h<drugs_ddid.length;h++){
//if(hashMap.get(drugs_did[k]).name==drugs_ddid[h]){
//alert("'"+drugs_cname[k]+"'中的药品名称"+"\n不能为空");//提示单选的文本题目不能为空
//return;
//}
//}
}else if(hashMap.get(drugs_did[k]).checked){
//这里要不把药品名称value弄成一个字段,用ID号来区分是什么药品
drugsvaluestr+=hashMap.get(drugs_did[k]).value+";";//将变量value拼成字符串
}
}
}
}
idstr+=vids[i]+";";//将变量id拼成字符串
codestr+=hashMap.get(vcodes[i]).name+",";//将变量code拼成字符串
//valuestr+=hashMap.get(vcodes[i]).value+";";//将变量value拼成字符串
valuestr+="'"+hashMap.get(vcodes[i]).value+"'"+",";//将变量value拼成字符串
}
}else if(hashMap.get(vcodes[i]).type=="checkbox"){//多选题
if(mView.style.display!='none'){//20120330lyd
if(eDiv){
if(eDiv.style.display=='block'){
if(isCheckbox(hashMap.get(vcodes[i]).name)==""){//name为f[j].name的一组多选按钮全部没有选中
for(var h=0;h<tcodes.length;h++){
if(hashMap.get(vcodes[i]).name==tcodes[h]){
//alert(tcnames[h]+"\n不能为空");//提示单选的文本题目不能为空
//return;
}
}
}
}
}
}
if(hashMap.get(vcodes[i]).checked){ //多选选中
idstr+=vids[i]+";";//将变量id拼成字符串
//codestr+=vcodes[i]+";";//将变量code拼成字符串
codestr+=vcodes[i]+",";//将变量code拼成字符串
valuestr+="'"+hashMap.get(vcodes[i]).value+"'"+",";//将变量value拼成字符串
}
}else if(hashMap.get(vcodes[i]).type=="select-one"){//下拉列表
if(hashMap.get(vcodes[i]).value!="-1"){//下拉列表的value不为空
idstr+=vids[i]+";";//将变量id拼成字符串
//codestr+=vcodes[i]+";";//将变量code拼成字符串
codestr+=vcodes[i]+",";//将变量code拼成字符串
valuestr+="'"+hashMap.get(vcodes[i]).value+"'"+",";//将变量value拼成字符串
//valuestr+=hashMap.get(vcodes[i]).value+";";//将变量value拼成字符串
}else{
if(mView.style.display!='none'){//20120330lyd
if(eDiv){
if(eDiv.style.display=='block'){
alert(vcnames[i]+"\n不能为空");
return;
}
}
}
}
}
}
}
var user = "<%=user.getUname()%>";
if(user!="null"&&user!=""){
testMessageBox(event);
myDate = new Date();
var e = myDate.getTime();
if(idstr.lastIndexOf(";")!=-1){// 拼最后一个id时,idstr字符串最后一个字符为;
idstr = idstr.substring(0,idstr.lastIndexOf(";"));// 去掉最后的;字符
}
if(codestr.lastIndexOf(",")!=-1){//拼最后一个code时,codestr字符串最后一个字符为;
codestr = codestr.substring(0,codestr.lastIndexOf(","));//去掉最后的;字符
}
if(valuestr.lastIndexOf(",")!=-1){//拼最后一个value时,valuestr字符串最后一个字符为;
valuestr = valuestr.substring(0,valuestr.lastIndexOf(","));//去掉最后的;字符
}
if(variablestr.lastIndexOf(";")!=-1){// 拼最后一个显示的变量code时,variablestr字符串最后一个字符为;
variablestr = variablestr.substring(0,variablestr.lastIndexOf(";"));// 去掉最后的;字符
}
if(drugsvaluestr.lastIndexOf(";")!=-1){
drugsvaluestr = drugsvaluestr.substring(0,drugsvaluestr.lastIndexOf(";"));// 去掉最后的;字符
}
//alert(idstr);alert(codestr);alert(valuestr);
document.mainForm.vid.value=idstr;//将idstr字符串赋给name为vid的表单隐藏域
document.mainForm.vcode.value=codestr;//将codestr字符串赋给name为vcode的表单隐藏域
document.mainForm.vvalue.value=valuestr;//将valuestr字符串赋给name为vvalue的表单隐藏域
document.mainForm.variable.value=variablestr;//将valuestr字符串赋给name为vvalue的表单隐藏域
document.mainForm.dvalue.value=drugsvaluestr;//将drugsvaluestr字符串赋给name为dvalue的表单隐藏域
var tag = "<%=tag%>";//获得修改或查看的标志
var url;
//alert(variablestr); document.mainForm.action="followupmain.do?operate=doFollowupAddValue&pid=<%=pid%>&mname="+m+"&vid="+idstr+"&vcode="+codestr+"&vvalue="+valuestr+"&variable="+variablestr+"&dvalue="+drugsvaluestr+"&time=<%=time%>"+"&state=end";
document.mainForm.submit();// 提交表单
}else{
alert("登陆超时,请重新登录!");
window.navigate("login.jsp");
}
}
现在的问题是
(1)当我改动了引入的那部分js后,部署到服务器上后,用户需要清空缓存才行(每次改动,不能叫所有的用户清缓存吧???)
(2)下面写在页面中的js,有时if判断中的部分地方不执行(这点我很郁闷啊~!)最后,求大神帮帮我啊~!
<script language="javascript" type="text/javascript" src="static/js/followupjs/followup.js"></script>//单击提交时的保存操作
function drugmainjs() {
var codestr = "";
var valuestr="";
var drugsvaluestr = "";
var variablestr="";
var myDate = new Date();
var s = myDate.getTime();
var test = document.mainForm.Sf_Date.value; //测试得到了随访时间的值
var f = document.mainForm; //得到表单对象
var hashMap=new HashMap();
for(var j=0;j<f.length;j++){
hashMap.put(f[j].id,f[j]);
}
//保存当前模块中的数据
for(var i=0;i<vcodes.length;i++){
var mView = document.mainForm.mname;
var m = document.mainForm.mname.value; //模块名称
var eDiv = document.getElementById("div_"+vcodes[i]);
//将界面所有显示着的变量code拼成字符串
if(eDiv){
if(eDiv.style.display=='block'){
variablestr+=vcodes[i]+";";
}
}
if(vmodes[i]==m){
if(hashMap.get(vcodes[i]).type=="text"){//输入题或日期时间题或日期题或下拉列表题
if(hashMap.get(vcodes[i]).value!=""){//表单对象value有值
idstr+=vids[i]+";";//将变量id拼成字符串
//codestr+=vcodes[i]+";";//将变量code拼成字符串
codestr+=vcodes[i]+",";//将变量code拼成字符串
valuestr+="'"+hashMap.get(vcodes[i]).value+"'"+",";//将变量value拼成字符串
}else{//表单对象value无值
if(mView.style.display!='none'){//20120330lyd模块div显示
if(eDiv){
if(eDiv.style.display=='block'){
alert(vcnames[i]+"\n不能为空");//20120408lyd新增
return;//20120408lyd新增
}
}
}
}
}else if(hashMap.get(vcodes[i]).type=="radio"){//单选题
if(mView.style.display!='none'){//20120330lyd
if(eDiv){
if(eDiv.style.display=='block'){
if(isRadio(hashMap.get(vcodes[i]).name)==""){//name为f[j].name的一组单选按钮全部没有选中
for(var h=0;h<tcodes.length;h++){
if(hashMap.get(vcodes[i]).name==tcodes[h]){
alert(tcnames[h]+"\n不能为空");//提示单选的文本题目不能为空
return;
}
}
}
}
}
}
if(hashMap.get(vcodes[i]).checked){ //单选选中
//如果用药单选题选中是,则进行药品名称的逻辑判断
var y = isRadio(hashMap.get(vcodes[i]).name);
if(y==2){
//详细药品名称的判断
var vcode = vcodes[i].split('_');
for(var k=0;k<drugs_did.length;k++){
var drugs = hashMap.get(drugs_did[k]).name.split('_');
if(vcode[1]==drugs[1]){
if(isCheckbox(hashMap.get(drugs_did[k]).name)==""){//name为f[j].name的一组多选按钮全部没有选中
//for(var h=0;h<drugs_ddid.length;h++){
//if(hashMap.get(drugs_did[k]).name==drugs_ddid[h]){
//alert("'"+drugs_cname[k]+"'中的药品名称"+"\n不能为空");//提示单选的文本题目不能为空
//return;
//}
//}
}else if(hashMap.get(drugs_did[k]).checked){
//这里要不把药品名称value弄成一个字段,用ID号来区分是什么药品
drugsvaluestr+=hashMap.get(drugs_did[k]).value+";";//将变量value拼成字符串
}
}
}
}
idstr+=vids[i]+";";//将变量id拼成字符串
codestr+=hashMap.get(vcodes[i]).name+",";//将变量code拼成字符串
//valuestr+=hashMap.get(vcodes[i]).value+";";//将变量value拼成字符串
valuestr+="'"+hashMap.get(vcodes[i]).value+"'"+",";//将变量value拼成字符串
}
}else if(hashMap.get(vcodes[i]).type=="checkbox"){//多选题
if(mView.style.display!='none'){//20120330lyd
if(eDiv){
if(eDiv.style.display=='block'){
if(isCheckbox(hashMap.get(vcodes[i]).name)==""){//name为f[j].name的一组多选按钮全部没有选中
for(var h=0;h<tcodes.length;h++){
if(hashMap.get(vcodes[i]).name==tcodes[h]){
//alert(tcnames[h]+"\n不能为空");//提示单选的文本题目不能为空
//return;
}
}
}
}
}
}
if(hashMap.get(vcodes[i]).checked){ //多选选中
idstr+=vids[i]+";";//将变量id拼成字符串
//codestr+=vcodes[i]+";";//将变量code拼成字符串
codestr+=vcodes[i]+",";//将变量code拼成字符串
valuestr+="'"+hashMap.get(vcodes[i]).value+"'"+",";//将变量value拼成字符串
}
}else if(hashMap.get(vcodes[i]).type=="select-one"){//下拉列表
if(hashMap.get(vcodes[i]).value!="-1"){//下拉列表的value不为空
idstr+=vids[i]+";";//将变量id拼成字符串
//codestr+=vcodes[i]+";";//将变量code拼成字符串
codestr+=vcodes[i]+",";//将变量code拼成字符串
valuestr+="'"+hashMap.get(vcodes[i]).value+"'"+",";//将变量value拼成字符串
//valuestr+=hashMap.get(vcodes[i]).value+";";//将变量value拼成字符串
}else{
if(mView.style.display!='none'){//20120330lyd
if(eDiv){
if(eDiv.style.display=='block'){
alert(vcnames[i]+"\n不能为空");
return;
}
}
}
}
}
}
}
var user = "<%=user.getUname()%>";
if(user!="null"&&user!=""){
testMessageBox(event);
myDate = new Date();
var e = myDate.getTime();
if(idstr.lastIndexOf(";")!=-1){// 拼最后一个id时,idstr字符串最后一个字符为;
idstr = idstr.substring(0,idstr.lastIndexOf(";"));// 去掉最后的;字符
}
if(codestr.lastIndexOf(",")!=-1){//拼最后一个code时,codestr字符串最后一个字符为;
codestr = codestr.substring(0,codestr.lastIndexOf(","));//去掉最后的;字符
}
if(valuestr.lastIndexOf(",")!=-1){//拼最后一个value时,valuestr字符串最后一个字符为;
valuestr = valuestr.substring(0,valuestr.lastIndexOf(","));//去掉最后的;字符
}
if(variablestr.lastIndexOf(";")!=-1){// 拼最后一个显示的变量code时,variablestr字符串最后一个字符为;
variablestr = variablestr.substring(0,variablestr.lastIndexOf(";"));// 去掉最后的;字符
}
if(drugsvaluestr.lastIndexOf(";")!=-1){
drugsvaluestr = drugsvaluestr.substring(0,drugsvaluestr.lastIndexOf(";"));// 去掉最后的;字符
}
//alert(idstr);alert(codestr);alert(valuestr);
document.mainForm.vid.value=idstr;//将idstr字符串赋给name为vid的表单隐藏域
document.mainForm.vcode.value=codestr;//将codestr字符串赋给name为vcode的表单隐藏域
document.mainForm.vvalue.value=valuestr;//将valuestr字符串赋给name为vvalue的表单隐藏域
document.mainForm.variable.value=variablestr;//将valuestr字符串赋给name为vvalue的表单隐藏域
document.mainForm.dvalue.value=drugsvaluestr;//将drugsvaluestr字符串赋给name为dvalue的表单隐藏域
var tag = "<%=tag%>";//获得修改或查看的标志
var url;
//alert(variablestr); document.mainForm.action="followupmain.do?operate=doFollowupAddValue&pid=<%=pid%>&mname="+m+"&vid="+idstr+"&vcode="+codestr+"&vvalue="+valuestr+"&variable="+variablestr+"&dvalue="+drugsvaluestr+"&time=<%=time%>"+"&state=end";
document.mainForm.submit();// 提交表单
}else{
alert("登陆超时,请重新登录!");
window.navigate("login.jsp");
}
}
现在的问题是
(1)当我改动了引入的那部分js后,部署到服务器上后,用户需要清空缓存才行(每次改动,不能叫所有的用户清缓存吧???)
(2)下面写在页面中的js,有时if判断中的部分地方不执行(这点我很郁闷啊~!)最后,求大神帮帮我啊~!
2.哪些地方不执行? 查看逻辑,代码兼容性。 建议firebug调试下。
第二个问题很是奇怪~!是这样的 if(vmodes[i]==m){}
这个if里面的东西,当我firebug后就能执行,但是如果我刚刚部署到tomcat中,在页面中填写内容时候就不执行其中单选题那部分~!不知道我的描述是否清楚
var m = document.mainForm.mname.value; //模块名称 var vmodes = [];// 记录变量的模块名称
//页面中传的值
<script type="text/javascript">
vids.push('<%=vt.getVaid() %>');
vcodes.push('<%=vt.getPcode() %>');
vcnames.push('<%=vt.getCname() %>');
vstates.push('<%=vt.getState() %>');
vmodes.push('<%=vt.getGid()%>');
</script>
如果不执行,得到的就是0值~!啊。郁闷啊~!!!求大神啊
function isRadio(radioname){
var b = "";
var element = document.mainForm.elements[radioname];
for(var i=0;i<element.length;i++){
if(element[i].checked){
b = element[i].value;
return b;
}
}
return b;
}
我发现问题出现在这个方法中~!b的值有时候会是0,得不到我想要的value
console.info(vmodes);
console.info(m);
看控制台输出(不调试输出)。
可以帮我看下这段代码//如果是单选按钮
function isRadio(radioname){
var b = "";
var element = document.mainForm.elements[radioname];
for(var i=0;i<element.length;i++){
if(element[i].checked){
b = element[i].value;
return b;
}
}
return b;
}b的值为什么有的时候会是0呢??正确的应该是1,2,99
b = element[i].value;替换成b += element[i]+',';
去掉if里面的return b;
function setSpaceValue(vab){// 参数为变量name
// alert("setSpaceValue")
var element = document.mainForm.elements[vab];// 得到表单控件实体
if(element){
if(element.value){
if(element.type=="select-one"){
element.value="-1";
}
if(element.type=="text"){
element.value="";
}
if(element.type=="checkbox" || element.type=="radio"){
element.checked=false;
//element.value="0";
}
}else if(element.length){
for(var i=0;i<element.length;i++){
element[i].checked=false;
//element[i].value="1";
}
}
}
}
注释掉的是原来的代码~!这里给value赋值了0.。。累死了~!