-
怎么让2个文本框用一个虚拟键盘点击输入不同数据?怎么实现求解!5
怎么让2个文本框用一个虚拟键盘点击输入不同数据?怎么实现求解!
<HTML>
<HEAD>
<SCRIPT type="text/javascript" src="vatmpad.js"></SCRIPT>
<SCRIPT><!--
var opened = false, vkb = null, text = null, insertionS = 0, insertionE = 0;
var userstr = navigator.userAgent.toLowerCase();
var isgecko = (userstr.indexOf('gecko') != -1) && (userstr.indexOf('applewebkit') == -1);
function numpad_change()
{
document.getElementById("switch").innerHTML = (opened ? "Show numpad" : "Hide numpad");
opened = !opened;
if(opened && !vkb)
{
vkb = new VATMpad("numpad", // container's id
pad_callback, // reference to the callback function
"", // font name ("" == system default)
"14px", // font size in px
"#000", // font color
"#FFF", // keyboard base background color
"#FFF", // keys' background color
"#777", // border color
true, // show key flash on click? (false by default)
"#CC3300", // font color for flash event
"#FF9966", // key background color for flash event
"#CC3300", // key border color for flash event
false, // embed VNumpad into the page?
true); // use 1-pixel gap between the keys?
}
else
vkb.Show(opened);
text = document.getElementById("textfield");
text.focus();
if(document.attachEvent)
text.attachEvent("onblur", backFocus);
}
function backFocus()
{
if(opened)
{
setRange(text, insertionS, insertionE);
text.focus();
}
}
// Advanced callback function:
//
function pad_callback(ch)
{
var val = text.value;
switch(ch)
{
case "BackSpace":
if(val.length)
{
var span = null;
if(document.selection)
span = document.selection.createRange().duplicate();
if(span && span.text.length > 0)
{
span.text = "";
getCaretPositions(text);
}
else
deleteAtCaret(text);
}
break;
default:
insertAtCaret(text, (ch == "Enter" ? (window.opera ? '\r\n' : '\n') : ch));
}
}
// This function retrieves the position (in chars, relative to
// the start of the text) of the edit cursor (caret), or, if
// text is selected in the TEXTAREA, the start and end positions
// of the selection.
//
function getCaretPositions(ctrl)
{
var CaretPosS = -1, CaretPosE = 0;
// Mozilla way:
if(ctrl.selectionStart || (ctrl.selectionStart == '0'))
{
CaretPosS = ctrl.selectionStart;
CaretPosE = ctrl.selectionEnd;
insertionS = CaretPosS == -1 ? CaretPosE : CaretPosS;
insertionE = CaretPosE;
}
// IE way:
else if(document.selection && ctrl.createTextRange)
{
var start = end = 0;
try
{
start = Math.abs(document.selection.createRange().moveStart("character", -10000000)); // start
if (start > 0)
{
try
{
var endReal = Math.abs(ctrl.createTextRange().moveEnd("character", -10000000));
var r = document.body.createTextRange();
r.moveToElementText(ctrl);
var sTest = Math.abs(r.moveStart("character", -10000000));
var eTest = Math.abs(r.moveEnd("character", -10000000));
if ((ctrl.tagName.toLowerCase() != 'input') && (eTest - endReal == sTest))
start -= sTest;
}
catch(err) {}
}
}
catch (e) {}
try
{
end = Math.abs(document.selection.createRange().moveEnd("character", -10000000)); // end
if(end > 0)
{
try
{
var endReal = Math.abs(ctrl.createTextRange().moveEnd("character", -10000000));
var r = document.body.createTextRange();
r.moveToElementText(ctrl);
var sTest = Math.abs(r.moveStart("character", -10000000));
var eTest = Math.abs(r.moveEnd("character", -10000000));
if ((ctrl.tagName.toLowerCase() != 'input') && (eTest - endReal == sTest))
end -= sTest;
}
catch(err) {}
}
}
catch (e) {}
insertionS = start;
insertionE = end
}
}
function setRange(ctrl, start, end)
{
if(ctrl.setSelectionRange) // Standard way (Mozilla, Opera, ...)
{
ctrl.setSelectionRange(start, end);
}
else // MS IE
{
var range;
try
{
range = ctrl.createTextRange();
}
catch(e)
{
try
{
range = document.body.createTextRange();
range.moveToElementText(ctrl);
}
catch(e)
{
range = null;
}
}
if(!range) return;
range.collapse(true);
range.moveStart("character", start);
range.moveEnd("character", end - start);
range.select();
}
insertionS = start;
insertionE = end;
}
function deleteSelection(ctrl)
{
if(insertionS == insertionE) return;
var tmp = (document.selection && !window.opera) ? ctrl.value.replace(/\r/g,"") : ctrl.value;
ctrl.value = tmp.substring(0, insertionS) + tmp.substring(insertionE, tmp.length);
setRange(ctrl, insertionS, insertionS);
}
function deleteAtCaret(ctrl)
{
// if(insertionE < insertionS) insertionE = insertionS;
if(insertionS != insertionE)
{
deleteSelection(ctrl);
return;
}
if(insertionS == insertionE)
insertionS = insertionS - 1;
var tmp = (document.selection && !window.opera) ? ctrl.value.replace(/\r/g,"") : ctrl.value;
ctrl.value = tmp.substring(0, insertionS) + tmp.substring(insertionE, tmp.length);
setRange(ctrl, insertionS, insertionS);
}
// This function inserts text at the caret position:
//
function insertAtCaret(ctrl, val)
{
if(insertionS != insertionE) deleteSelection(ctrl);
if(isgecko && document.createEvent && !window.opera)
{
var e = document.createEvent("KeyboardEvent");
if(e.initKeyEvent && ctrl.dispatchEvent)
{
e.initKeyEvent("keypress", // in DOMString typeArg,
false, // in boolean canBubbleArg,
true, // in boolean cancelableArg,
null, // in nsIDOMAbstractView viewArg, specifies UIEvent.view. This value may be null;
false, // in boolean ctrlKeyArg,
false, // in boolean altKeyArg,
false, // in boolean shiftKeyArg,
false, // in boolean metaKeyArg,
null, // key code;
val.charCodeAt(0));// char code.
ctrl.dispatchEvent(e);
}
}
else
{
var tmp = (document.selection && !window.opera) ? ctrl.value.replace(/\r/g,"") : ctrl.value;
ctrl.value = tmp.substring(0, insertionS) + val + tmp.substring(insertionS, tmp.length);
}
setRange(ctrl, insertionS + val.length, insertionS + val.length);
}
//--></SCRIPT></HEAD>
<BODY>
<P style="font-family:Tahoma;font-size:14px">Virtual keyboard/atm pad installation.</P>
<TABLE border="0" width="60%">
<TR>
<TD width="100px"><TEXTAREA id="textfield" rows="2" cols="50" onKeyUp="getCaretPositions(this);" onClick="getCaretPositions(this);"></TEXTAREA></TD>
<TD width="100px"><TEXTAREA id="textfields" rows="2" cols="50" onKeyUp="getCaretPositions(this);" onClick="getCaretPositions(this);"></TEXTAREA></TD>
</TR>
</TABLE>
<P><A href="javascript:numpad_change()" onClick="javascript:blur()" id="switch" style="font-family:Tahoma;font-size:14px;text-decoration:none;border-bottom: 1px dashed #0000F0;color:#0000F0">Show numpad</A></P>
<DIV id="numpad"></DIV>
</BODY></HTML>2012年5月17日 17:51
目前还没有答案
相关推荐
总的来说,通过以上步骤,我们可以利用C#或VB.NET实现点击文本框弹出数字软键盘的功能,提供一个便捷的输入方式,特别是在触摸屏设备或者安全性要求较高的应用场景中。这个功能的实现体现了.NET Framework的灵活性和...
限制文本框输入源是一个常见的需求,在 C# WinForm 应用程序中,我们可以使用 KeyPress 事件和 TimeSpan 结构来实现这个功能。通过检查时间间隔,我们可以判断输入的来源,如果是键盘输入,则清空文本框的内容,而...
在C#编程中,实现DataGridView数据与文本框(TextBox)数据的同步是一项常见的需求,特别是在进行数据展示或编辑时。本文将详细介绍如何通过C#代码实现这一功能,并提供多个示例来帮助理解不同场景下的实现方式。 #...
这个项目对初学者来说是一个很好的实践,因为它涵盖了GUI基础、控件使用、事件处理和数据同步等核心概念。通过这个项目,不仅可以熟悉MFC或Windows API,还能理解C++中对象间的通信机制,为后续更复杂的GUI编程打下...
QT4.8软键盘是一种基于Qt4.8框架实现的虚拟键盘,主要目的是在无物理键盘的设备上提供文本输入功能。它通过点击输入框(通常是一个LineEdit控件)来弹出,模拟了类似安卓系统键盘的行为。下面将详细阐述这个知识点。...
总的来说,LabVIEW虚拟键盘是一个强大的工具,它结合了软件的灵活性和物理键盘的功能,为用户提供了一种在无物理键盘环境下的输入解决方案。了解和掌握如何在LabVIEW中创建和使用虚拟键盘,对于提升应用程序的用户...
标题中的“关于使用javascript实现点击一个页面文本框,然后跳转到另一个页面进行点击值回传例子”描述了一个常见的Web开发场景,涉及到JavaScript的页面交互和数据传递。在这个过程中,用户在页面A(我们假设是c....
标题中提及的"js实现鼠标点击文本框自动选中内容的方法"主要涉及到的是JavaScript编程语言中的两个概念:鼠标点击事件(onClick)和文本选择事件(select)。在Web开发中,页面上的文本框(input type="text")或者...
根据给定文件的信息,本文将详细探讨如何使用JavaScript在用户输入达到某个文本框的最大长度时自动跳转到下一个文本框的技术实现。 ### 技术背景 在Web开发中,经常需要处理用户输入的情况,比如在表单中设置多个...
1. 编写一个 Java 程序, 在程序中建立一个窗口, 有两个文本框和一个按钮, 单击按钮, 能把左边文本框中的内容复制到右边文本框中.
【标题】:“date_点击文本框”通常指的是在编程或者前端开发中,用户界面(UI)设计的一个常见元素,即日期选择器与文本框的结合。日期点击文本框允许用户通过点击文本框来选取或输入日期,它融合了日期选择器的便捷...
在VB(Visual Basic)编程环境中,文本框组(TextBoxes Group)是一种常用控件,用于用户界面设计,允许用户输入和显示文本数据。利用文本框组输入数据是创建交互式应用程序的重要步骤,尤其是在数据录入、信息查询...
在C#编程中,文本框(TextBox)是用户界面中常用的一种控件,用于接收用户的文本输入。在设计用户友好的界面时,我们有时需要为文本框提供输入提示,这通常被称为“水印”或“占位符”效果。当文本框为空时,会显示...
"C#文本框输入提示功能 下拉框"这个主题就涉及到如何在文本框中实现智能提示和下拉列表的选择功能。 1. **文本框输入提示功能**: 这个功能通常指的是文本框的水印效果,即当文本框为空时显示一段提示文字,一旦...
当用户点击键盘上的按钮时,会触发一个信号,这个信号连接到相应的槽函数,处理输入并更新文本框或其他输入字段。 5. **键盘布局**:设计虚拟键盘时,需要考虑不同平台的习惯和用户友好性。通常,数字键盘包括0-9的...
考虑到扫码枪的输入通常会直接添加到文本框中,我们可以利用这两个事件来实现预期功能。 1. **实现过程**: - 首先,在Form设计器中,选中目标`TextBox`控件,然后在属性窗口中找到`LostFocus`事件,并为其分配一...
在本项目中,我们将使用Java语言来实现一个图形用户界面(GUI)的计算器。这个计算器的设计目标是,当用户点击不同的数字和运算符按钮时,计算式能够在屏幕顶部的文本框中实时显示出来。以下是对实现这个功能所需...
"纯javascript实现副文本框"这个主题聚焦于如何利用JavaScript来创建一个功能丰富的文本输入组件,这种组件通常被称为富文本编辑器。副文本框,或者说是富文本编辑器,允许用户在网页上进行类似Word的文本编辑,包括...
"js限制文本框输入内容"这个主题涉及到如何使用JavaScript来控制用户在HTML文本框(`<input>`元素)中输入的数据类型和格式。这通常是为了增强用户体验,确保用户输入的数据符合预期,避免错误或不合法的输入。以下...
在C#编程中,"只能输入数字文本框"是一个常见的需求,特别是在开发用户界面时,例如在财务软件、统计应用或者任何需要用户输入数值数据的场景。为了实现这个功能,我们需要编写特定的代码来限制用户在文本框...