<div class="dream_name">
<p><strong>我的梦想是:</strong><input class="input_text" id="dreamtitle" name="dreamtitle" type="text" maxlength="40" /></p>
<span>(最多可输入<strong id="stat_max"></strong>个字符,当前共<strong id="stat_total"></strong>个字符,还可输入<strong id="stat_left" ></strong>个字符)</span>
</div>
<script language="javascript" type="text/javascript">
<!--
var
// 获取元素
$ = function(element) {
return (typeof(element) == 'object' ? element : document.getElementById(element));
},
// 判断浏览器
brower = function() {
var ua = navigator.userAgent.toLowerCase();
var os = new Object();
os.isFirefox = ua.indexOf ('gecko') != -1;
os.isOpera = ua.indexOf ('opera') != -1;
os.isIE = !os.isOpera && ua.indexOf ('msie') != -1;
os.isIE7 = os.isIE && ua.indexOf ('7.0') != -1;
return os;
},
// 事件操作(可保留原有事件)
eventListeners = [],
findEventListener = function(node, event, handler){
var i;
for (i in eventListeners){
if (eventListeners[i].node == node && eventListeners[i].event == event && eventListeners[i].handler == handler){
return i;
}
}
return null;
},
myAddEventListener = function(node, event, handler){
if (findEventListener(node, event, handler) != null){
return;
}
if (!node.addEventListener){
node.attachEvent('on' + event, handler);
}else{
node.addEventListener(event, handler, false);
}
eventListeners.push({node: node, event: event, handler: handler});
},
removeEventListenerIndex = function(index){
var eventListener = eventListeners[index];
delete eventListeners[index];
if (!eventListener.node.removeEventListener){
eventListener.node.detachEvent('on' + eventListener.event,
eventListener.handler);
}else{
eventListener.node.removeEventListener(eventListener.event,
eventListener.handler, false);
}
},
myRemoveEventListener = function(node, event, handler){
var index = findEventListener(node, event, handler);
if (index == null) return;
removeEventListenerIndex(index);
},
cleanupEventListeners = function(){
var i;
for (i = eventListeners.length; i > 0; i--){
if (eventListeners[i] != undefined){
removeEventListenerIndex(i);
}
}
};
-->
</script>
<script language="javascript" type="text/javascript">
<!--
/*
- statInput 输入限制统计
- 长度超出_max的话就截取...貌似没有更好的办法了
*/
function statInput(e, _max, _exp) {
e = $(e);
_max = parseInt(_max);
_max = isNaN(_max) ? 0 : _max;
_exp = _exp==undefined ? {} : _exp;
if(e==null || _max==0) {
alert('statInput初始化失败!');
return;
}
var
// 浏览器
_brower = brower();
// 输出对象
_objMax = _exp._max==undefined ? null : $(_exp._max),
_objTotal = _exp._total==undefined ? null : $(_exp._total),
_objLeft = _exp._left==undefined ? null : $(_exp._left),
// 弹出提示
_hint = _exp._hint==undefined ? null : _exp._hint;
// 初始统计
if(_objMax!=null) _objMax.innerHTML = _max;
if(_objTotal!=null) _objTotal.innerHTML = 0;
if(_objLeft!=null) _objLeft.innerHTML = 0;
// 设置监听事件
// 输入这个方法比较好.
// 但是Opera下中文输入跟粘贴不能正确统计...相当BT的东西...
// 如果不考虑Opera的话就用这个吧.否则就老老实实用计时器.
if(_brower.isIE) {
myAddEventListener(e, "propertychange", stat);
}else{
myAddEventListener(e, "input", stat);
}
// 统计函数
var _len, _olen, _lastRN, _sTop;
_olen = _len = 0;
function stat() {
_len = e.value.length;
if(_len==_olen) return; // 防止用计时器监听时做无谓的牺牲...
if(_len>_max) {
_sTop = e.scrollTop;
// 避免IE最后俩字符为'\r\n'.导致崩溃...
_lastRN = (e.value.substr(_max-1, 2) == "\r\n");
e.value = e.value.substr(0, (_lastRN ? _max-1 : _max));
if(_hint==true) alert("你太调皮了,都已经超出字符限制了,为师跟你说过,叫你不要输那么多字~~.");
// 解决FF老是跑回顶部
if(_brower.isFirefox) e.scrollTop = e.scrollHeight;
}
_olen = _len = e.value.length;
// 显示已输入字数
if(_objTotal!=null) _objTotal.innerHTML = _len;
// 显示剩余可输入字数
if(_objLeft!=null) _objLeft.innerHTML = (_max-_len)<0 ? 0 : (_max-_len);
}
stat();
}
-->
</script>
<script language="javascript" type="text/javascript">
<!--
myAddEventListener(window, "load", testStatInput);
function testStatInput(){
statInput('dreamtitle', 40, {_max : 'stat_max', _total : 'stat_total', _left : 'stat_left', _hint : true});
}
-->
</script>
分享到:
相关推荐
如果还有字节未处理,继续循环 ; 最终结果在C寄存器中 ``` 这个框架只是一个简化的示例,实际的51汇编代码会更复杂,需要考虑更多的细节,如溢出检测、错误处理等。此外,由于51单片机的限制,可能需要使用其他...
### 常用限制文本字节数的JS源代码...通过以上介绍,我们可以看到这个JavaScript函数不仅能够有效地控制用户的输入长度,还能够提供友好的用户体验。开发者可以根据自己的需求调整参数,轻松地将其应用到不同的场景中。
7. **编码转换**:除了ASCII,还有许多其他字符编码,如UTF-8、GBK等。工具可能支持不同编码间的转换,解决字符集兼容性问题。 ByteConvertTool.exe很可能是这样一款字节转换工具的可执行文件。使用时,用户只需...
此外,还有“字节集长度”用于获取字节集的大小,“字节集到字符串”和“字符串到字节集”用于字节集与字符串之间的转换,这些都是在处理字节集时常用的操作。 在字节集辅助工具中,可能包含了一些实用的辅助函数,...
- 类似地,还有更多条件判断来适应更长的数据长度。 - **子程序DVDL1**:这是核心的除法运算子程序,实现了基本的除法算法。具体步骤包括: - 将除数的每一位向左移位,并将进位保存在`C`中。 - 使用`SUBB A, R3...
也是以前用汇编写的,其实还有更好的写法,只是我懒得改了。效率嘛,至少可以完爆目前所有公开的易语言。源码。特点:支持按字节反转,作用自己体会,可自动处理长度不正确的 HEX 数据,比如 HEX 文本为 ABC,转换到...
因为调试需要把下位机传上来的4字节数转成浮点数查看,网上找的都不能很好的使用,有的还有病毒,所以自己做了这个小程序。C#做的,机器上有.NET Fromwork 4就可以直接使用。 使用方法:在上面4个文本框中输入4个16...
此外,这个程序还可以扩展到四字节浮点数的转换,只需要调整解析和重构过程中的细节,以适应标准的单精度浮点数格式。 在实际应用中,这样的程序可能用于通信协议、数据交换或者在处理某些硬件设备的数据时,这些...
1.任何数据类型到字节流的转换 2.字节流到任何数据类型的转换 3.字符串按各种格式编码,解码 4.各种进制的转换,一键全转,当然还有反转 小工具,大用途! 工控代码开发,TCP通讯,字节流调试的利器
7. 其他JVM语言:由于JVM平台的灵活性和强大的字节码支持,除了Java之外,还有很多基于JVM的编程语言,例如Groovy、Scala、Kotlin等,它们可以利用Java字节码的特性提供一些Java所不支持的高级语言特性。 8. 字节码...
在实际工作中,根据不同的需求,我们还需要考虑性能优化、错误处理以及如何安全地处理大量数据等问题。对于开发人员来说,熟悉这些概念和技巧能大大提高工作效率,并为解决复杂问题提供有力工具。
4. **多种解决方案**:除了文中提到的方法外,还有其他一些方法也可以解决第一个字节丢失的问题,例如加入小延时或直接清除TC标志位后再发送数据。 通过以上分析和解决方案的应用,开发者可以有效地解决STM32串口...
字节码查看器和二进制查看器-字节破解解码很有用-v1.0 解码dat文件专用。破解专用。转码有用。 字节码查看器,二进制查看器,字节破解解码很有用。还有更专业的,没有开放出来。
InputStream 还有一个子类:过滤器流 java.io.FilterInputStream。过滤器流即能把基本流包裹起来,提供更多方便的用法。FilterInputStream 类的构造方法为 FilterInputStream(InputStream),在指定的输入流之上,...
在Java IO中,还有一套转换流(Wrapper Stream),即InputStreamReader和OutputStreamWriter,它们可以将字节流转换为字符流,或者反之。例如,当你需要从一个字节流读取文本数据时,可以先创建一个...
除了这些基本的反编译工具,还有一些高级的工具和框架,如Java的ASM和.NET的Mono.Cecil,它们允许开发者直接操作字节码,用于动态代码生成、代码插桩和性能分析等目的。这些库虽然不直接进行反编译,但它们在底层...
在 Java 中,还有许多其他的知识点与原始类型和包装类相关。例如,Integer 类提供了许多有用的方法,可以对整数进行操作,例如将整数转换为字符串、比较两个整数的大小等。Byte 类、Short 类、Long 类、Float 类、...