[转]javascript:只能输入数字(ie、ff)

<div>本文转自:http://www.cnblogs.com/ly5201314/archive/2009/03/04/1402993.html<br><p>javascript:只能输入数字(ie、ff)</p><p>为了解决只能输入数字的问题,网上有许多资料,现归拢一下。</p><p><strong>  一、不带负号的输入</strong></p><p>这里,没有解决“正负号”的问题。</p><p>由于“正负号”必须出现在数字的最前端,因此,必须要判断当前光标所在的位置是否在输入文本框的首位。</p><table style="border-right: 1px solid; border-top: 1px solid; border-left: 1px solid; border-bottom: 1px solid; background-color: #e0e0e0;" cellspacing="0" cellpadding="0" width="100%" border="1"><tr><td><p><script language="javascript" type="text/javascript" ><br><!--<br>//调用方式:onkeydown = "digitinput(this,event);"<br>function digitinput(el,ev) {<br>//8:退格键、46:delete、37-40: 方向键<br>//48-57:小键盘区的数字、96-105:主键盘区的数字<br>//110、190:小键盘区和主键盘区的小数<br>//189、109:小键盘区和主键盘区的负号</p><p> var event = ev || window.event; //ie、ff下获取事件对象<br> var currentkey = event.charcode||event.keycode; //ie、ff下获取键盘码<br><br> //小数点处理<br> if (currentkey == 110 || currentkey == 190) {<br> if (el.value.indexof(".")>=0) <br> if (window.event) //ie<br> event.returnvalue=false; //e.returnvalue = false;效果相同.<br> else //firefox<br> event.preventdefault();</p><p> } else <br> if (currentkey!=8 && currentkey != 46 && (currentkey<37 || currentkey>40) && (currentkey<48 || currentkey>57) && (currentkey<96 || currentkey>105))<br> if (window.event) //ie<br> event.returnvalue=false; //e.returnvalue = false;效果相同.<br> else //firefox<br> event.preventdefault();</p><p>}<br>--></p><p></script></p></td></tr></table><p><strong>  二、带负号的输入</strong></p><p>  判断带负号的输入,则必须要知道光标的位置,也就是说,只有当光标在最前端时,负号才有效。</p><table style="border-right: 1px solid; border-top: 1px solid; border-left: 1px solid; border-bottom: 1px solid; background-color: #e0e0e0;" cellspacing="0" cellpadding="0" width="100%" border="1"><tr><td><p><script language="javascript" type="text/javascript" ><br><!--<br>//调用方式:onkeydown = "digitinput(this,event);"<br>function digitinput(el,ev) {<br>//8:退格键、46:delete、37-40: 方向键<br>//48-57:小键盘区的数字、96-105:主键盘区的数字<br>//110、190:小键盘区和主键盘区的小数<br>//189、109:小键盘区和主键盘区的负号</p><p> var event = ev || window.event; //ie、ff下获取事件对象<br> var currentkey = event.charcode||event.keycode; //ie、ff下获取键盘码<br><br> //小数点处理<br> if (currentkey == 110 || currentkey == 190) {<br> if (el.value.indexof(".")>=0) <br> if (window.event) //ie<br> event.returnvalue=false; //e.returnvalue = false;效果相同.<br> else //firefox<br> event.preventdefault();</p><p> } else<br> //负号处理<br><strong> if (currentkey == 189 || currentkey == 109) {<br> if (getposition(el)>0 || el.value.indexof("-")>=0)<br></strong> if (window.event) //ie<br> event.returnvalue=false; //e.returnvalue = false;效果相同.<br> else //firefox<br> event.preventdefault();<br> } else<br> if (currentkey!=8 && currentkey != 46 && (currentkey<37 || currentkey>40) && (currentkey<48 || currentkey>57) && (currentkey<96 || currentkey>105))<br> if (window.event) //ie<br> event.returnvalue=false; //e.returnvalue = false;效果相同.<br> else //firefox<br> event.preventdefault();</p><p>}<br>/**<br> * 获取光标所在的字符位置<br> * @param obj 要处理的控件, 支持文本域和输入框<br> * @author hotleave<br> */<br>function getposition(obj){<br> var result = 0;<br> if(obj.selectionstart){ //非ie浏览器<br> result = obj.selectionstart<br> }else{ //ie<br> var rng;<br> if(obj.tagname == "textarea"){ //如果是文本域<br> rng = event.srcelement.createtextrange();<br> rng.movetopoint(event.x,event.y);<br> }else{ //输入框<br> rng = document.selection.createrange();<br> }<br> rng.movestart("character",-event.srcelement.value.length);<br> result = rng.text.length;<br> }<br> return result;<br>}</p><p>--></p><p></script></p></td></tr></table><p>getposition(obj)函数,是一个获取光标位置的通用函数。</p><p>为了减少传入的参数,事件对象是可以通过事件获取的:</p><table style="border-right: 1px solid; border-top: 1px solid; border-left: 1px solid; border-bottom: 1px solid; background-color: #ccffff;" cellspacing="0" cellpadding="0" width="100%" border="1"><tr><td>var el = window.event.srcelement||ev.target;</td></tr></table><p>只需将传digitinput(el,ev)的第一句加上上面这条语句,并且将传入参数只有ev一个即可,这样,减少了传入值。</p><p><strong>  三、扩展</strong></p><p>  我们可以增加一个传入的参数值,用于限定允许输入的数字条件:</p><p>1:允许正整数;2、允许正小数;3、允许负整数;4、允许负小数。</p><p>当然,传入一个正则表达式也可以实现。</p><div style="border-right: #cccccc 1px solid; padding-right: 5px; border-top: #cccccc 1px solid; padding-left: 4px; font-size: 13px; padding-bottom: 4px; border-left: #cccccc 1px solid; width: 98%; padding-top: 4px; border-bottom: #cccccc 1px solid; background-color: #eeeeee;"><img alt="" src="http://www.cnblogs.com/images/outliningindicators/none.gif" align="top"><span style="color: #000000;">functiononlynum()<br><img id="codehighlighter1_20_477_open_image" src="http://www.cnblogs.com/images/outliningindicators/expandedblockstart.gif" align="top"><img id="codehighlighter1_20_477_closed_image" style="display: none;" src="http://www.cnblogs.com/images/outliningindicators/contractedblock.gif" align="top"></span><span id="codehighlighter1_20_477_open_text"><span style="color: #000000;">{<br><img alt="" src="http://www.cnblogs.com/images/outliningindicators/inblock.gif" align="top"></span><span style="color: #0000ff;">if</span><span style="color: #000000;">(</span><span style="color: #000000;">!</span><span style="color: #000000;">((</span><span style="color: #0000ff;">event</span><span style="color: #000000;">.keycode</span><span style="color: #000000;">>=</span><span style="color: #000000;">48</span><span style="color: #000000;">&&</span><span style="color: #0000ff;">event</span><span style="color: #000000;">.keycode</span><span style="color: #000000;"><=</span><span style="color: #000000;">57</span><span style="color: #000000;">)<br><img alt="" src="http://www.cnblogs.com/images/outliningindicators/inblock.gif" align="top"></span><span style="color: #000000;">||</span><span style="color: #000000;">(</span><span style="color: #0000ff;">event</span><span style="color: #000000;">.keycode</span><span style="color: #000000;">>=</span><span style="color: #000000;">96</span><span style="color: #000000;">&&</span><span style="color: #0000ff;">event</span><span style="color: #000000;">.keycode</span><span style="color: #000000;"><=</span><span style="color: #000000;">105</span><span style="color: #000000;">)<br><img alt="" src="http://www.cnblogs.com/images/outliningindicators/inblock.gif" align="top"></span><span style="color: #000000;">||</span><span style="color: #000000;">(</span><span style="color: #0000ff;">event</span><span style="color: #000000;">.keycode</span><span style="color: #000000;">==</span><span style="color: #000000;">8</span><span style="color: #000000;">)</span><span style="color: #008000;">//</span><span style="color: #008000;">退格</span><span style="color: #008000;"><br><img alt="" src="http://www.cnblogs.com/images/outliningindicators/inblock.gif" align="top"></span><span style="color: #000000;"></span><span style="color: #000000;">||</span><span style="color: #000000;">(</span><span style="color: #0000ff;">event</span><span style="color: #000000;">.keycode</span><span style="color: #000000;">==</span><span style="color: #000000;">46</span><span style="color: #000000;">)</span><span style="color: #008000;">//</span><span style="color: #008000;">del</span><span style="color: #008000;"><br><img alt="" src="http://www.cnblogs.com/images/outliningindicators/inblock.gif" align="top"></span><span style="color: #000000;"></span><span style="color: #000000;">||</span><span style="color: #000000;">(</span><span style="color: #0000ff;">event</span><span style="color: #000000;">.keycode</span><span style="color: #000000;">==</span><span style="color: #000000;">27</span><span style="color: #000000;">)</span><span style="color: #008000;">//</span><span style="color: #008000;">esc</span><span style="color: #008000;"><br><img alt="" src="http://www.cnblogs.com/images/outliningindicators/inblock.gif" align="top"></span><span style="color: #000000;"></span><span style="color: #000000;">||</span><span style="color: #000000;">(</span><span style="color: #0000ff;">event</span><span style="color: #000000;">.keycode</span><span style="color: #000000;">==</span><span style="color: #000000;">37</span><span style="color: #000000;">)</span><span style="color: #008000;">//</span><span style="color: #008000;">左</span><span style="color: #008000;"><br><img alt="" src="http://www.cnblogs.com/images/outliningindicators/inblock.gif" align="top"></span><span style="color: #000000;"></span><span style="color: #000000;">||</span><span style="color: #000000;">(</span><span style="color: #0000ff;">event</span><span style="color: #000000;">.keycode</span><span style="color: #000000;">==</span><span style="color: #000000;">39</span><span style="color: #000000;">)</span><span style="color: #008000;">//</span><span style="color: #008000;">右</span><span style="color: #008000;"><br><img alt="" src="http://www.cnblogs.com/images/outliningindicators/inblock.gif" align="top"></span><span style="color: #000000;"></span><span style="color: #000000;">||</span><span style="color: #000000;">(</span><span style="color: #0000ff;">event</span><span style="color: #000000;">.keycode</span><span style="color: #000000;">==</span><span style="color: #000000;">16</span><span style="color: #000000;">)</span><span style="color: #008000;">//</span><span style="color: #008000;">shift</span><span style="color: #008000;"><br><img alt="" src="http://www.cnblogs.com/images/outliningindicators/inblock.gif" align="top"></span><span style="color: #000000;"></span><span style="color: #000000;">||</span><span style="color: #000000;">(</span><span style="color: #0000ff;">event</span><span style="color: #000000;">.keycode</span><span style="color: #000000;">==</span><span style="color: #000000;">9</span><span style="color: #000000;">)</span><span style="color: #008000;">//</span><span style="color: #008000;">tab</span><span style="color: #008000;"><br><img alt="" src="http://www.cnblogs.com/images/outliningindicators/inblock.gif" align="top"></span><span style="color: #000000;">)<br><img alt="" src="http://www.cnblogs.com/images/outliningindicators/inblock.gif" align="top">)<br><img alt="" src="http://www.cnblogs.com/images/outliningindicators/inblock.gif" align="top"></span><span style="color: #008000;">//</span><span style="color: #008000;">考虑小键盘上的数字键</span><span style="color: #008000;"><br><img alt="" src="http://www.cnblogs.com/images/outliningindicators/inblock.gif" align="top"></span><span style="color: #000000;"></span><span style="color: #0000ff;">event</span><span style="color: #000000;">.returnvalue</span><span style="color: #000000;">=</span><span style="color: #0000ff;">false</span><span style="color: #000000;">;<br><img alt="" src="http://www.cnblogs.com/images/outliningindicators/expandedblockend.gif" align="top">}</span></span><span style="color: #000000;"> <br></span>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
基于YOLOv9实现工业布匹缺陷(破洞、污渍)检测系统python源码+详细运行教程+训练好的模型+评估 【使用教程】 一、环境配置 1、建议下载anaconda和pycharm 在anaconda中配置好环境,然后直接导入到pycharm中,在pycharm中运行项目 anaconda和pycharm安装及环境配置参考网上博客,有很多博主介绍 2、在anacodna中安装requirements.txt中的软件包 命令为:pip install -r requirements.txt 或者改成清华源后再执行以上命令,这样安装要快一些 软件包都安装成功后才算成功 3、安装好软件包后,把anaconda中对应的python导入到pycharm中即可(不难,参考网上博客) 二、环境配置好后,开始训练(也可以训练自己数据集) 1、数据集准备 需要准备yolo格式的目标检测数据集,如果不清楚yolo数据集格式,或者有其他数据训练需求,请看博主yolo格式各种数据集集合链接:https://blog.csdn.net/DeepLearning_/article/details/127276492 里面涵盖了上百种yolo数据集,且在不断更新,基本都是实际项目使用。来自于网上收集、实际场景采集制作等,自己使用labelimg标注工具标注的。数据集质量绝对有保证! 本项目所使用的数据集,见csdn该资源下载页面中的介绍栏,里面有对应的下载链接,下载后可直接使用。 2、数据准备好,开始修改配置文件 参考代码中data文件夹下的banana_ripe.yaml,可以自己新建一个不同名称的yaml文件 train:训练集的图片路径 val:验证集的图片路径 names: 0: very-ripe 类别1 1: immature 类别2 2: mid-ripe 类别3 格式按照banana_ripe.yaml照葫芦画瓢就行,不需要过多参考网上的 3、修改train_dual.py中的配置参数,开始训练模型 方式一: 修改点: a.--weights参数,填入'yolov9-s.pt',博主训练的是yolov9-s,根据自己需求可自定义 b.--cfg参数,填入 models/detect/yolov9-c.yaml c.--data参数,填入data/banana_ripe.yaml,可自定义自己的yaml路径 d.--hyp参数,填入hyp.scratch-high.yaml e.--epochs参数,填入100或者200都行,根据自己的数据集可改 f.--batch-size参数,根据自己的电脑性能(显存大小)自定义修改 g.--device参数,一张显卡的话,就填0。没显卡,使用cpu训练,就填cpu h.--close-mosaic参数,填入15 以上修改好,直接pycharm中运行train_dual.py开始训练 方式二: 命令行方式,在pycharm中的终端窗口输入如下命令,可根据自己情况修改参数 官方示例:python train_dual.py --workers 8 --device 0 --batch 16 --data data/coco.yaml --img 640 --cfg models/detect/yolov9-c.yaml --weights '' --name yolov9-c --hyp hyp.scratch-high.yaml --min-items 0 --epochs 500 --close-mosaic 15 训练完会在runs/train文件下生成对应的训练文件及模型,后续测试可以拿来用。 三、测试 1、训练完,测试 修改detect_dual.py中的参数 --weights,改成上面训练得到的best.pt对应的路径 --source,需要测试的数据图片存放的位置,代码中的test_imgs --conf-thres,置信度阈值,自定义修改 --iou-thres,iou阈值,自定义修改 其他默认即可 pycharm中运行detect_dual.py 在runs/detect文件夹下存放检测结果图片或者视频 【特别说明】 *项目内容完全原创,请勿对项目进行外传,或者进行违法等商业行为! 【备注】 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用!有问题请及时沟通交流。 2、适用人群:计算机相关专业(如计科、信息安全、数据科学与大数据技术、人工智能、通信、物联网、自动化、电子信息等)在校学生、专业老师或者企业员工下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值