js执行问题(已解决)
时间:2010-05-18
来源:互联网
大家帮我看一下这js,我要实现的是,改动有效期的时候,js自动改变应付金额,根据推荐模式的不同,来得出最终结果,如果有效期和之前的有效期相等,则按钮不可用,并且新的有效期不能小于旧的有效期,有效期必须是整数,下面是我的代码,但是还是能输入非数字进去,疑是js执行时间过长,没有及时响应引起的,哪位帮我看看,要怎么处理一下,谢谢。
<style type="text/css"> .r { color:Red; } .g { color:Green; } .bg { background-color:#3b494c; color:#eeeeee; } .emsg { font-size:12pt; color:Red; font-weight:bold; } </style> <table width="80%" cellpadding="2" cellspacing="2" border="1"> <tr> <td style="width:10%" class="bg">产品名称:</td> <td>产品名称:</td> </tr> <tr> <td class="bg">产品图片:</td> <td> </td> </tr> <tr> <td class="bg">价格提示:</td> <td>当前固定推荐的价格为:<span class="r" id="gtj">300</span> 元/月 随机推荐价格为:<span class="g" id="stj">500</span> 元/月</td> </tr> <tr> <td class="bg">生效时间:</td> <td>2010-01-01 </td> </tr> <tr> <td class="bg">有 效 期:</td> <td><input type="text" id="yxq" value="0" onkeyup="if(!parseInt(value))execCommand('undo');Ischange();gettotal();checkStats();" /> 个月 当前是:<span id="h_yxq" class="r">2</span> 个月(注:新的有效期不能小于旧的有效期 <br /><span class='r' style="display:none;" id="checkdata">有效期不能为空</span></td> </tr> <tr> <td class="bg">推荐模式:</td> <td><input type="checkbox" name="gd" id="gd" onclick="gettotal()" onfocus="this.blur()" /> 固定 (不选则表示随机) 当前推荐模式为:<span id="tjms" class="r">随机</span></td> </tr> <tr> <td class="bg">应付费用:</td> <td><input type="text" value="0" id="txtCj" readonly="readonly" disabled="disabled" /> </td> </tr> <tr> <td></td> <td><input type="submit" ID="sub" Text="确认修改" /></td> </tr> </table> <script type="text/javascript"> function gettotal() { var gdprice=document.getElementById("gtj").innerHTML; var sjprice=document.getElementById("stj").innerHTML; var newyxq=document.getElementById("yxq").value; var oldyxq=document.getElementById("h_yxq").innerHTML; var cmod=document.getElementById("tjms").innerHTML; var gdbox=document.getElementById("gd"); var oldprice; if(cmod=="固定") { oldprice=gdprice*oldyxq; } else { oldprice=sjprice*oldyxq; } var newprice; var cj; if(gdbox.checked) { newprice=gdprice*newyxq; } else { newprice=sjprice*newyxq; } cj=newprice-oldprice; document.getElementById("txtCj").value=cj; } function Ischange() { var ctime=document.getElementById("yxq").value; var otime=document.getElementById("h_yxq").innerHTML; var er=document.getElementById("checkdata"); if(!parseInt(ctime)) { execCommand('undo'); // return false; } if(ctime=="") { // alert(ctime); document.getElementById("checkdata").innerHTML="有效期不能为空"; document.getElementById("checkdata").style.display="inline"; return false; } else { document.getElementById("checkdata").style.display="none"; } if(otime-ctime>0) { document.getElementById("checkdata").innerHTML="新的有效期不能小于旧的有效期"; document.getElementById("checkdata").style.display="inline"; return false; // alert("ctime="+ctime+",otime="+otime+",ctime-otime="+(ctime-otime)); } // gettotal(); // checkStats(); return true; } function checkStats() { var ctime=document.getElementById("yxq").value; var otime=document.getElementById("h_yxq").innerHTML; if(ctime==otime) { document.getElementById("sub").disabled=true; } else { document.getElementById("sub").disabled=false; } } </script>
提示:您可以先修改部分代码再运行
[ 本帖最后由 yw1688 于 2010-5-19 09:37 编辑 ] 提示:您可以先修改部分代码再运行
作者: yw1688 发布时间: 2010-05-18
首先,你的那个代码,我测试的时候并没有问题。
其次,你的数字判断和消除代码效率可能比较低。改成正则会好些。
其次,你的数字判断和消除代码效率可能比较低。改成正则会好些。
<style type="text/css"> .r { color:Red; } .g { color:Green; } .bg { background-color:#3b494c; color:#eeeeee; } .emsg { font-size:12pt; color:Red; font-weight:bold; } </style> <table width="80%" cellpadding="2" cellspacing="2" border="1"> <tr> <td style="width:10%" class="bg">产品名称:</td> <td>产品名称:</td> </tr> <tr> <td class="bg">产品图片:</td> <td> </td> </tr> <tr> <td class="bg">价格提示:</td> <td>当前固定推荐的价格为:<span class="r" id="gtj">300</span> 元/月 随机推荐价格为:<span class="g" id="stj">500</span> 元/月</td> </tr> <tr> <td class="bg">生效时间:</td> <td>2010-01-01 </td> </tr> <tr> <td class="bg">有 效 期:</td> <td><input type="text" id="yxq" value="0" onkeyup="this.value=this.value.replace(/\D/g,'');Ischange();gettotal();checkStats();" /> 个月 当前是:<span id="h_yxq" class="r">2</span> 个月(注:新的有效期不能小于旧的有效期 <br /><span class='r' style="display:none;" id="checkdata">有效期不能为空</span></td> </tr> <tr> <td class="bg">推荐模式:</td> <td><input type="checkbox" name="gd" id="gd" onclick="gettotal()" onfocus="this.blur()" /> 固定 (不选则表示随机) 当前推荐模式为:<span id="tjms" class="r">随机</span></td> </tr> <tr> <td class="bg">应付费用:</td> <td><input type="text" value="0" id="txtCj" readonly="readonly" disabled="disabled" /> </td> </tr> <tr> <td></td> <td><input type="submit" ID="sub" Text="确认修改" /></td> </tr> </table> <script type="text/javascript"> function gettotal() { var gdprice=document.getElementById("gtj").innerHTML; var sjprice=document.getElementById("stj").innerHTML; var newyxq=document.getElementById("yxq").value; var oldyxq=document.getElementById("h_yxq").innerHTML; var cmod=document.getElementById("tjms").innerHTML; var gdbox=document.getElementById("gd"); var oldprice; if(cmod=="固定") { oldprice=gdprice*oldyxq; } else { oldprice=sjprice*oldyxq; } var newprice; var cj; if(gdbox.checked) { newprice=gdprice*newyxq; } else { newprice=sjprice*newyxq; } cj=newprice-oldprice; document.getElementById("txtCj").value=cj; } function Ischange() { var ctime=document.getElementById("yxq").value; var otime=document.getElementById("h_yxq").innerHTML; var er=document.getElementById("checkdata"); if(!parseInt(ctime)) { execCommand('undo'); // return false; } if(ctime=="") { // alert(ctime); document.getElementById("checkdata").innerHTML="有效期不能为空"; document.getElementById("checkdata").style.display="inline"; return false; } else { document.getElementById("checkdata").style.display="none"; } if(otime-ctime>0) { document.getElementById("checkdata").innerHTML="新的有效期不能小于旧的有效期"; document.getElementById("checkdata").style.display="inline"; return false; // alert("ctime="+ctime+",otime="+otime+",ctime-otime="+(ctime-otime)); } // gettotal(); // checkStats(); return true; } function checkStats() { var ctime=document.getElementById("yxq").value; var otime=document.getElementById("h_yxq").innerHTML; if(ctime==otime) { document.getElementById("sub").disabled=true; } else { document.getElementById("sub").disabled=false; } } </script>
提示:您可以先修改部分代码再运行
提示:您可以先修改部分代码再运行
作者: ericwoo 发布时间: 2010-05-18
效率的确高了许多,我说的那问题再也没有出现了,谢谢。
作者: yw1688 发布时间: 2010-05-19
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28