积极答复者
用javascript令用户在Textbox的输入产生替换效果求助

问题
答案
-
<script language="javascript">
// function onkeydownHandler() {
// var tb = document.getElementById("tbName");
// var cursorIndex = GetCursorIndexOfTextBox(tb);
// //alert("此时光标的index是 " + cursorIndex);
// var str = tb.value;
//// }
function GetCursorIndexOfTextBox(obj) {
obj.focus(); //textbox获取焦点
var workRange = document.selection.createRange(); //根据选中的文本区创建一个workRange
var workRange_copy = document.selection.createRange(); //根据选中的文本区再创建一个workRange,用于备份textbox的初始状态,便于恢复初始状态
obj.select(); //textbox的全部文本被选中
var allRange = document.selection.createRange(); //allRange表示全部文本区
workRange.setEndPoint("StartToStart", allRange); //将workRange的开始点移到allRange的开始点
var cursorposition = workRange.text.length; //获取此时的workRange的Text的长度,即为光标所在文本中的Index
workRange.collapse(false); //将workRange的插入点移到workRange的结尾处
workRange_copy.select(); //恢复textbox原先的状态
return cursorposition; //返回光标所在文本的index(从0开始)
}
function onkeydownHandler(oEvent) {
//alert(oEvent.keyCode);
if ((oEvent.keyCode == 39) || (oEvent.keyCode == 37) || (oEvent.keyCode == 8)) {
return true;
}
else {
if (((oEvent.keyCode < 46) || (oEvent.keyCode > 105) || (oEvent.keyCode > 57 && oEvent.keyCode < 96))) {
return false;
}
}var tb = document.getElementById("tbName");
var cursorIndex = GetCursorIndexOfTextBox(tb);
var str = tb.value;
var nextStr = str.substring(cursorIndex, cursorIndex + 1);
if ((nextStr == "/")) {
return false;
}var workRange = document.selection.createRange();
workRange.moveEnd("character", 1);
workRange.select();
}</script>
<input id="tbName" type="text" onkeydown="javascript:return onkeydownHandler(event)"
value="12/30/2008" />
Microsoft Online Community Support- 已标记为答案 scate233 2010年1月20日 6:38
全部回复
-
用asp.net ajax的CalendarExtender
之前就是因为有一大堆这些东西结果速度慢了很多,所以才要弄这种textbox的
http://www.open-open.com/ajax/Calendar.htm jquery -
<script language="javascript">
// function onkeydownHandler() {
// var tb = document.getElementById("tbName");
// var cursorIndex = GetCursorIndexOfTextBox(tb);
// //alert("此时光标的index是 " + cursorIndex);
// var str = tb.value;
//// }
function GetCursorIndexOfTextBox(obj) {
obj.focus(); //textbox获取焦点
var workRange = document.selection.createRange(); //根据选中的文本区创建一个workRange
var workRange_copy = document.selection.createRange(); //根据选中的文本区再创建一个workRange,用于备份textbox的初始状态,便于恢复初始状态
obj.select(); //textbox的全部文本被选中
var allRange = document.selection.createRange(); //allRange表示全部文本区
workRange.setEndPoint("StartToStart", allRange); //将workRange的开始点移到allRange的开始点
var cursorposition = workRange.text.length; //获取此时的workRange的Text的长度,即为光标所在文本中的Index
workRange.collapse(false); //将workRange的插入点移到workRange的结尾处
workRange_copy.select(); //恢复textbox原先的状态
return cursorposition; //返回光标所在文本的index(从0开始)
}
function onkeydownHandler(oEvent) {
//alert(oEvent.keyCode);
if ((oEvent.keyCode == 39) || (oEvent.keyCode == 37) || (oEvent.keyCode == 8)) {
return true;
}
else {
if (((oEvent.keyCode < 46) || (oEvent.keyCode > 105) || (oEvent.keyCode > 57 && oEvent.keyCode < 96))) {
return false;
}
}var tb = document.getElementById("tbName");
var cursorIndex = GetCursorIndexOfTextBox(tb);
var str = tb.value;
var nextStr = str.substring(cursorIndex, cursorIndex + 1);
if ((nextStr == "/")) {
return false;
}var workRange = document.selection.createRange();
workRange.moveEnd("character", 1);
workRange.select();
}</script>
<input id="tbName" type="text" onkeydown="javascript:return onkeydownHandler(event)"
value="12/30/2008" />
Microsoft Online Community Support- 已标记为答案 scate233 2010年1月20日 6:38