求一个数字加逗号的问题(急,在线等) <p id=aa>asd</p><script language=javascript>var d=10045345;aa.innerHTML=d.toLocaleString();</script> 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 <input type=text size=30 onblur="onaablur(this);" onfocus="onaafocus(this);"><script language=javascript>function onaablur(o){ if(o.value!="")o.value=Number(o.value).toLocaleString(); }function onaafocus(o){ if(o.value!="")o.value=Number(o.value);}</script> <HTML><HEAD><TITLE> New Document </TITLE> <script language="javascript">function setCurrency(){ s=Form1.inputbox.value; if(/[^0-9\.\-]/.test(s)) return "invalid value"; s=s.replace(/^(\d*)$/,"$1."); s=(s+"00").replace(/(\d*\.\d\d)\d*/,"$1"); s=s.replace(".",","); var re=/(\d)(\d{3},)/; while(re.test(s)) s=s.replace(re,"$1,$2"); s=s.replace(/,(\d\d)$/,".$1"); s=s.replace(/^\./,"0."); Form1.inputbox.value=s; } </script></HEAD><BODY><FORM name="Form1" METHOD=POST ACTION=""><INPUT TYPE="text" NAME="inputbox" value="" onblur="setCurrency()"> </FORM></BODY></HTML> Unending(看分答题) ,谢谢你,会给你分的不过你得代码,再次得到焦点时侯会报错阿,另外,如果本身数字没有小数位,就不要加小数为了,帮忙到底,谢谢了 <input type=text size=30 onblur="onaablur(this);" onfocus="onaafocus(this);"><script language=javascript>function onaablur(o){ if(o.value!="")o.value=Number(o.value).toLocaleString().replace(/\.00$/g,""); }function onaafocus(o){ if(o.value!="")o.value=Number(o.value.replace(/,/g,""));}</script>最后给你改一次,不行就自己想办法吧 <script language=javascript>/*参数1:以#表示数字或字符,可加入一个小数点,两个小数点就会出错,格式化后的样式参数2:每组格式之间的连接符*/String.prototype.HBformatNumber=function(FormatParttern,ConnectOption){if(!/#/.test(FormatParttern))//判断格式是不是可以进行格式化{return "格式错误";}var FormatPartternArray=FormatParttern.split("\.");//分开小数部分和整数部分的格式return splitNUM(this)function splitNUM(num)//此函数进行分开数字{NumArray=num.split("\.")if(NumArray.length==1){return formatNUM(NumArray[0],FormatPartternArray[0],true)}else{if(FormatPartternArray.length==1){return formatNUM(NumArray[0],FormatPartternArray[0],true)+"."+NumArray[1]}else{return formatNUM(NumArray[0],FormatPartternArray[0],true)+"."+formatNUM(NumArray[1],FormatPartternArray[1],false)}}}/*格式化字符串函数参数1:待格式化的字符串参数2:格式化样式参数3:是否为整数格式化,true为整数格式化,false为小数,字符串也为true*/function formatNUM(num,Formatparttern,ifInterger){var IntergerPushArray=new Array();//定义一个数组栈来存放整数var IntergerFormatPartternNum=Formatparttern.match(/\#/g).length//得到一组格式化样式中包含多少个数字/var IntegerParttern=(ifInterger)?(new RegExp(Formatparttern.replace(/[^#]/g,"").replace(/#/g,".")+"$")):new RegExp("^"+Formatparttern.replace(/[^#]/g,"").replace(/#/g,"."))//创建正则为了把每组数字取出来while(IntegerParttern.test(num)){IntergerPushArray.push(num.match(IntegerParttern))//把每一组放到数组中num=num.replace(IntegerParttern,"");//去掉这组,去拿下一组}if(num!=""){var RemainNum=num.length//剩下不够一组数字的时候判断还有几个数字var deleteNum=IntergerFormatPartternNum-RemainNum//一会需要去掉的数字个数for(var i=0;i<IntergerFormatPartternNum;i++)//把最后一组不够的位数加0填充{num=(ifInterger)?("0"+num):(num+"0")}num=(ifInterger)?num.substr((num.length-parseInt(IntergerFormatPartternNum))):num.substr(0,IntergerFormatPartternNum)//得到最后一个格式化后的函数IntergerPushArray.push(num);//将最后一组进栈}for(var i=0;i<IntergerPushArray.length;i++){var j=-1;var str=IntergerPushArray[i].toString();IntergerPushArray[i]=Formatparttern.replace(/(#)/g,function($1){j++;return str.substr(j,1)})//替换}if(ifInterger)//如果整数返回数组逆序,并且通过连接字符连接每组数据,去掉多余的0;否则返回格式化后的小数部分{return (IntergerPushArray.reverse().join(ConnectOption).substr(parseInt(deleteNum)))}else{return(IntergerPushArray.join(ConnectOption))}}}var a="12324536789.1243211";//在这里修改要格式化的字符串var b="20050908"var c="20050908091500"var d="abcssfasdfsdfsdf"/*alert(a.HBformatNumber("###.###",","))//可以按各种需要进行格式化,比如格式化3位一组alert(a.HBformatNumber("###",","))//只格式化整数部分,3位一组alert(b.HBformatNumber("####-##-##",""))//时间字符串也支持,可以把input的maxlength属性设为相应格式的最大长度,这样就不会出现两组了,不过没有判断是否为时间对象alert(c.HBformatNumber("####-##-## ##:##:##",""))//可以加时分秒alert(a.HBformatNumber("###,##.#-##"," "))//支持大部分特殊格式alert(d.HBformatNumber("###",","))//支持大部分字符串*/function show2(obj){ obj.value=obj.value.HBformatNumber("###",",")}function show(obj){ obj.value=obj.value.replace(/,/g,"")}</script><input name="haha" onfocus=show(this) onblur="show2(this)"> Unending(看分答题),谢谢你,基本完美,但还差一点,能否在帮下盲?解决马上给分!就是获得焦点时侯,逗号没有了,但是光标总是跑到文本框的最前面,我想鼠标点到哪里,光标就停在哪里,这个该怎么实现阿,谢谢了阿 得到文本框内光标位置HTML代码:<script language="javascript"> function getPos(obj){ obj.focus(); var s=document.selection.createRange(); s.setEndPoint("StartToStart",obj.createTextRange()) alert(s.text.length); } </script> <input type="text" id="txt1" value="1234567890"> <input type="button" value="得到光标位置" onclick=getPos(txt1)> 控制input框内光标位置HTML代码:<script language="javascript"> function setPos(num) { text1.focus(); var e =document.getElementById("text1"); var r =e.createTextRange(); r.moveStart('character',num); r.collapse(true); r.select(); } </script> <input type="text" id="text1" value="1234567890"> <select onchange="setPos(this.selectedIndex)"> <option value="0">0</option> <option value="1">1</option> <option value="2">2</option> <option value="3">3</option> <option value="4">4</option> <option value="5">5</option> <option value="6">6</option> <option value="7">7</option> </select> JS Confirm() 函数的问题 设置select的高度的问题 大小写之间怎样快速的转换啊 点checkbox的时候,怎么把parengNode的tr的事件屏蔽掉? 大菜鸟求助!关于onmouseover事件的属性问题.. select 问题 金山的注册页面 不用提交可以检验 用户id是否被注册。。。里面有网站连接,谁帮我看看谢谢啊?要是知道告诉我,这是javascript的那方面的 怎么用checkbox控制text和button的状态呢? 有关ASP和WSH运行时权限的问题。 svg如何设置中心点进行缩放 Dreamweaver和css的问题 求助js文件操作问题,高手进!
<script language=javascript>
function onaablur(o)
{
if(o.value!="")o.value=Number(o.value).toLocaleString();
}
function onaafocus(o)
{
if(o.value!="")o.value=Number(o.value);
}
</script>
<HEAD>
<TITLE> New Document </TITLE>
<script language="javascript">
function setCurrency(){
s=Form1.inputbox.value;
if(/[^0-9\.\-]/.test(s)) return "invalid value";
s=s.replace(/^(\d*)$/,"$1.");
s=(s+"00").replace(/(\d*\.\d\d)\d*/,"$1");
s=s.replace(".",",");
var re=/(\d)(\d{3},)/;
while(re.test(s))
s=s.replace(re,"$1,$2");
s=s.replace(/,(\d\d)$/,".$1");
s=s.replace(/^\./,"0.");
Form1.inputbox.value=s;
}
</script>
</HEAD>
<BODY>
<FORM name="Form1" METHOD=POST ACTION="">
<INPUT TYPE="text" NAME="inputbox" value="" onblur="setCurrency()">
</FORM>
</BODY>
</HTML>
不过你得代码,再次得到焦点时侯会报错阿,另外,如果本身数字没有小数位,就不要加小数为了,帮忙到底,谢谢了
<script language=javascript>
function onaablur(o)
{
if(o.value!="")o.value=Number(o.value).toLocaleString().replace(/\.00$/g,"");
}
function onaafocus(o)
{
if(o.value!="")o.value=Number(o.value.replace(/,/g,""));
}
</script>最后给你改一次,不行就自己想办法吧
/*
参数1:以#表示数字或字符,可加入一个小数点,两个小数点就会出错,格式化后的样式
参数2:每组格式之间的连接符
*/
String.prototype.HBformatNumber=function(FormatParttern,ConnectOption)
{
if(!/#/.test(FormatParttern))//判断格式是不是可以进行格式化
{
return "格式错误";
}
var FormatPartternArray=FormatParttern.split("\.");//分开小数部分和整数部分的格式
return splitNUM(this)
function splitNUM(num)//此函数进行分开数字
{
NumArray=num.split("\.")
if(NumArray.length==1)
{
return formatNUM(NumArray[0],FormatPartternArray[0],true)
}
else
{
if(FormatPartternArray.length==1)
{
return formatNUM(NumArray[0],FormatPartternArray[0],true)+"."+NumArray[1]
}
else
{
return formatNUM(NumArray[0],FormatPartternArray[0],true)+"."+formatNUM(NumArray[1],FormatPartternArray[1],false)
}
}
}
/*
格式化字符串函数
参数1:待格式化的字符串
参数2:格式化样式
参数3:是否为整数格式化,true为整数格式化,false为小数,字符串也为true
*/
function formatNUM(num,Formatparttern,ifInterger)
{
var IntergerPushArray=new Array();//定义一个数组栈来存放整数
var IntergerFormatPartternNum=Formatparttern.match(/\#/g).length//得到一组格式化样式中包含多少个数字/
var IntegerParttern=(ifInterger)?(new RegExp(Formatparttern.replace(/[^#]/g,"").replace(/#/g,".")+"$")):new RegExp("^"+Formatparttern.replace(/[^#]/g,"").replace(/#/g,"."))//创建正则为了把每组数字取出来
while(IntegerParttern.test(num))
{
IntergerPushArray.push(num.match(IntegerParttern))//把每一组放到数组中
num=num.replace(IntegerParttern,"");//去掉这组,去拿下一组
}
if(num!="")
{
var RemainNum=num.length//剩下不够一组数字的时候判断还有几个数字
var deleteNum=IntergerFormatPartternNum-RemainNum//一会需要去掉的数字个数
for(var i=0;i<IntergerFormatPartternNum;i++)//把最后一组不够的位数加0填充
{
num=(ifInterger)?("0"+num):(num+"0")
}
num=(ifInterger)?num.substr((num.length-parseInt(IntergerFormatPartternNum))):num.substr(0,IntergerFormatPartternNum)//得到最后一个格式化后的函数
IntergerPushArray.push(num);//将最后一组进栈
}
for(var i=0;i<IntergerPushArray.length;i++)
{
var j=-1;
var str=IntergerPushArray[i].toString();
IntergerPushArray[i]=Formatparttern.replace(/(#)/g,function($1){j++;return str.substr(j,1)})//替换
}
if(ifInterger)//如果整数返回数组逆序,并且通过连接字符连接每组数据,去掉多余的0;否则返回格式化后的小数部分
{
return (IntergerPushArray.reverse().join(ConnectOption).substr(parseInt(deleteNum)))
}
else
{
return(IntergerPushArray.join(ConnectOption))
}
}
}
var a="12324536789.1243211";//在这里修改要格式化的字符串
var b="20050908"
var c="20050908091500"
var d="abcssfasdfsdfsdf"
/*
alert(a.HBformatNumber("###.###",","))//可以按各种需要进行格式化,比如格式化3位一组
alert(a.HBformatNumber("###",","))//只格式化整数部分,3位一组
alert(b.HBformatNumber("####-##-##",""))//时间字符串也支持,可以把input的maxlength属性设为相应格式的最大长度,这样就不会出现两组了,不过没有判断是否为时间对象
alert(c.HBformatNumber("####-##-## ##:##:##",""))//可以加时分秒
alert(a.HBformatNumber("###,##.#-##"," "))//支持大部分特殊格式
alert(d.HBformatNumber("###",","))//支持大部分字符串
*/
function show2(obj)
{
obj.value=obj.value.HBformatNumber("###",",")
}
function show(obj)
{
obj.value=obj.value.replace(/,/g,"")
}
</script>
<input name="haha" onfocus=show(this) onblur="show2(this)">
就是获得焦点时侯,逗号没有了,但是光标总是跑到文本框的最前面,我想鼠标点到哪里,光标就停在哪里,这个该怎么实现阿,谢谢了阿
function getPos(obj){
obj.focus();
var s=document.selection.createRange();
s.setEndPoint("StartToStart",obj.createTextRange())
alert(s.text.length);
}
</script>
<input type="text" id="txt1" value="1234567890">
<input type="button" value="得到光标位置" onclick=getPos(txt1)>
控制input框内光标位置HTML代码:<script language="javascript">
function setPos(num)
{
text1.focus();
var e =document.getElementById("text1");
var r =e.createTextRange();
r.moveStart('character',num);
r.collapse(true);
r.select();
}
</script>
<input type="text" id="text1" value="1234567890">
<select onchange="setPos(this.selectedIndex)">
<option value="0">0</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
</select>