+ -
当前位置:首页 → 问答吧 → js执行问题(已解决)

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();" /> 个月&nbsp; 当前是:<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" /> &nbsp; </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();" /> 个月&nbsp; 当前是:<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" /> &nbsp; </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

热门下载

更多