请问怎样可以在文本框输入式子,然后出现得数? <input type="text" onblur="excute(this)">function excute(obj){ …………………校验表达式合法... if(合法) obj.value = eval(表达式) else …………如果不合法} 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html lang="gb2312" xmlns="http://www.w3.org/1999/xhtml"><head> <title></title> <script> window.onload = function(){ var oT = document.getElementById('text1'); oT.onblur = function(){ alert(eval(oT.value)); } } </script></head><body> <input type="text" id="text1" /></body></html> 非常感谢上面的网友那么快的答复。看到eval这个函数,突然想起,应该是用过的了。验证表达式合法性方面,我用了Javascript自己带的try{}catch(e){},问题就解决了。不知道是否还有其他验证表达式合法性的方法。因为不能即时派分,要等明天了。再次感谢。 用EL表达式?不用了吧???而且,我的式子不是预先写好的,是随时可以改的啊!网页运行的时候,不可能在文本框里面输入EL表达式,然后光标离开的时候触发事件来取得结果吧??? js中是没有这样的函数的,需要自己写一个公式校验函数.本人为你写了一个,没有经过严格测试的.可以解决你的问题.[code=JScript][<html><head> <title>MUMU_JAVA</title></head><body> <script> function validateFormula() { var s = document.getElementById("tt").value; var r = s.match(/[^+\-*/()^\:]+/g); var totalLength = 0; if(r!=null){ totalLength = r.length; } if(r) { var mm = {}; for(var i=0;i<r.length;i++) { if(isNaN(r[i])){ alert("输入了非数字的公式:"+r[i]); return false; }else if("undefined"==typeof(mm[r[i]])){ mm[r[i]] = r[i]; } } for(var i in mm) { s = s.replace(new RegExp(i,"g"), "1"); } var qq = s.match(/[^+\-*/()^]+/g); var dd = {}; for(var i=0; i<qq.length; i++) { if("undefined"==typeof(dd[qq[i]])) { dd[qq[i]] = qq[i]; } } for(var i in dd) { s = s.replace(new RegExp(i, "g"), "1"); totalLength += 1;//加上所有小数的个数 } totalLength -= 1;//减掉重复的1才是小数的个数 var sum = s.replace(new RegExp("[-]|[*]|[/]","g"),"+");//用来测试是否连续输入两个元素 try { if(!isNaN(eval(s))&&eval(sum)==totalLength) { alert("公式合法!"); document.getElementById("tt").value = eval(document.getElementById("tt").value); return true; } } catch (ex) { } }else if(r==null){ alert("你没有输入公式项!!!"); return true; } alert("公式不合法!"); return false; } </script></body><input type="text" name="tt" value="" onblur="validateFormula()"></html>] 非常感谢上面各位网友。确实用Eval()函数就可以了。我找回我自己一年多前做作业写的那个网页计算器的代码,原来自己一年多前已经用过了。这个函数还可以当作isNaN()来用,如果输入了其他字符,会报错的。7楼的代码有点大材小用了,有空的时候学习一下。 eval()是可以解决得到结果的情况,但是它不能判断输入的公式是否合法,如果不合法eval()就只能报错了。所以要是在应用中使用的话是不行的,不过仅仅是为了得到结果还是可以使用的。 正则表达式问题2 怎么用 getEelementByClass 找到后边的 TEXT 内容??? 请教关于菜单联动的问题,涉及到数据库的连接 请教高手关于JS画图代码 js 解析 json文件,json中的key 是带点的 例如 str.key:123 非常奇怪的问题 又是梅花雪日控件的问题 兄弟们快来帮忙啊(表格控制问题) help在线等,立马给分。 问一个外行问题, 是什么东西哦?有什么用? js取得TreeView选定的值?? 图片切换代码如何实现的
<html lang="gb2312" xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script>
window.onload = function(){
var oT = document.getElementById('text1');
oT.onblur = function(){
alert(eval(oT.value));
}
}
</script>
</head>
<body>
<input type="text" id="text1" />
</body>
</html>
看到eval这个函数,突然想起,应该是用过的了。
验证表达式合法性方面,我用了Javascript自己带的try{}catch(e){},问题就解决了。
不知道是否还有其他验证表达式合法性的方法。
因为不能即时派分,要等明天了。
再次感谢。
[code=JScript][<html>
<head>
<title>MUMU_JAVA</title>
</head>
<body>
<script>
function validateFormula()
{
var s = document.getElementById("tt").value; var r = s.match(/[^+\-*/()^\:]+/g);
var totalLength = 0;
if(r!=null){
totalLength = r.length;
} if(r)
{
var mm = {};
for(var i=0;i<r.length;i++)
{
if(isNaN(r[i])){
alert("输入了非数字的公式:"+r[i]);
return false;
}else if("undefined"==typeof(mm[r[i]])){
mm[r[i]] = r[i];
}
}
for(var i in mm)
{
s = s.replace(new RegExp(i,"g"), "1");
}
var qq = s.match(/[^+\-*/()^]+/g); var dd = {};
for(var i=0; i<qq.length; i++)
{
if("undefined"==typeof(dd[qq[i]]))
{
dd[qq[i]] = qq[i];
}
}
for(var i in dd)
{
s = s.replace(new RegExp(i, "g"), "1");
totalLength += 1;//加上所有小数的个数
} totalLength -= 1;//减掉重复的1才是小数的个数
var sum = s.replace(new RegExp("[-]|[*]|[/]","g"),"+");//用来测试是否连续输入两个元素
try
{
if(!isNaN(eval(s))&&eval(sum)==totalLength)
{
alert("公式合法!");
document.getElementById("tt").value = eval(document.getElementById("tt").value);
return true;
}
}
catch (ex)
{
}
}else if(r==null){
alert("你没有输入公式项!!!");
return true;
}
alert("公式不合法!");
return false;
}
</script>
</body>
<input type="text" name="tt" value="" onblur="validateFormula()">
</html>]
确实用Eval()函数就可以了。我找回我自己一年多前做作业写的那个网页计算器的代码,原来自己一年多前已经用过了。
这个函数还可以当作isNaN()来用,如果输入了其他字符,会报错的。
7楼的代码有点大材小用了,有空的时候学习一下。