- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在做一个项目,当时我使用的是 mobiscroll 数字键盘。它适用于默认预设。
是否可以制作我自己的预设?
例如:我想为输入的数字设置一个千位分隔符,但这应该只是可视的,并且设置的值应该没有这些分隔符。
我研究了自定义预设并发现了这个 one .
所以我试了一下,使用自定义的小键盘预设。对于我的第一次尝试,我想要像 Mobiscroll 的演示示例中那样的预设行为:Demo
他们使用“可变分数”,但我想定义一个预设,所以我不需要编写“parseValue:......” - 每次我使用这种数字键盘时的代码。
这是我使用的代码(没有用):我想我做错了什么。
JQuery/Javascript
$(function(){
$('#numpad').mobiscroll().numpad({
theme: 'mobiscroll',
display: 'modal',
template: 'dddddddddddddd',
placeholder: '',
fill: 'ltr',
allowLeadingZero: true,
preset: 'mypreset',
buttons: ['set','cancel','clear'],
leftButton: {
text: '.',
value: '.'
}
});
$.mobiscroll.presets.numpad.mypreset = function(inst) {
return {
// Typically a preset defines the 'wheels', 'formatResult', and 'parseValue' settings
parseValue: function (value) {
if (value) {
return value.toString().split('');
}
return [];
},
formatValue: function (value) {
return value.join('');
},
validate: function (values) {
var disabledButtons = [],
invalid = false;
if (!values.length || values.length >= 9 || values.indexOf('.') !== -1) {
disabledButtons.push('.');
}
if (values.length == 1 && values[0] === 0) {
for (var i = 1; i <= 9; i++) {
disabledButtons.push(i);
}
}
if (!values.length || values[values.length - 1] == '.') {
invalid = true;
}
return {
invalid: invalid,
disabled: disabledButtons
};
},
// The preset may override any other core settings
headerText: false
}
}
});
HTML:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0">
<title>Mobiscroll</title>
<!-- jQuery Include -->
<script src="http://code.jquery.com/jquery-1.11.1.min.js"></script>
<!-- Mobiscroll JS and CSS Includes -->
<link href="css/mobiscroll.custom-2.15.1.min.css" rel="stylesheet" type="text/css" />
<script src="js/mobiscroll.custom-2.15.1.min.js" type="text/javascript"></script>
<style type="text/css">
/* Demo Page styling, you can ignore this in your implementation */
body { padding: 0; margin: 0; font-size: 16px; font-family: arial, verdana, sans-serif; }
input, select { width: 100%; padding: .625em; margin: 0 0 .625em 0; border: 1px solid #aaa; box-sizing: border-box; -moz-box-sizing: border-box; -webkit-box-sizing: border-box; }
.header { padding: .625em; background: #5185a8;}
.header h1 { margin: 0; padding: 0; color: #fff; text-align: center; font-size: 1.25em; font-weight: bold; text-shadow: 1px 1px 1px #000; text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }
.content { padding: 1em; }
</style>
<script src="/js/test.js"></script>
</head>
<body>
<!-- Decimal Numpad demo markup -->
<div data-role="fieldcontain" class="demo-cont" id="demo_cont_numpad1">
<label for="demo_numpad1">Try Decimal Numpad</label>
<input type="text" id="numpad" />
</div>
</div>
</body>
</html>
我的最后一个问题,我的方法是否正确,还是有其他(更好的)方法可以做到这一点?
添加:抱歉我的英语不好。
最佳答案
我想出了如何制作自己的预设。我以十进制的Preset-Code为基础,稍微改动了一下。
例子:这是一个预设,您可以在其中以百分比形式键入数字。你不能输入超过 100%我通过禁用数字来做到这一点
$(function(){
var ms = $.mobiscroll,
presets = ms.presets.numpad,
defaults = {
min: 0,
max: 100,
scale: 2,
prefix: '',
suffix: '%',
returnAffix: false,
fill: 'rtl'
};
$.mobiscroll.presets.numpad.mypreset = function(inst) {
function getNumber(value) {
var i,
ret = 0;
while (value.length) {
ret = ret * 10 + value.shift();
}
for (i = 0; i < s.scale; i++) {
ret /= 10;
}
return ret;
}
var orig = $.extend({}, inst.settings),
s = $.extend(inst.settings, defaults, orig);
// Extended methods
// ---
inst.getVal = function (temp) {
var val = inst._getVal(temp);
return ms.util.isNumeric(val) ? +val : val;
};
// ---
return {
template: s.prefix.replace(/d/g, '\\d') + Array((Math.floor(s.max) + '').length + 1).join('d') + s.suffix.replace(/d/g, '\\d'),
parseValue: function (value) {
var i, m,
v = value || s.defaultValue,
ret = [];
if (v) {
v = v + '';
m = v.match(/\d+\d*/g);
if (m) {
m = (+m[0]).toFixed(s.scale);
for (i = 0; i < m.length; i++) {
if (m[i] != '.') {
if (+m[i]) {
ret.push(+m[i]);
} else if (ret.length) { // No leading 0s
ret.push(0);
}
}
}
}
}
return ret;
},
formatValue: function (value) {
var nr = getNumber(value).toFixed(s.scale);
return s.returnAffix ? (s.prefix + nr + s.suffix) : nr;
},
validate: function (value) {
var v = getNumber(value.slice(0)).toFixed(s.scale),
disabled = [];
if(v>10){
var k;
for(k=0;k<10;k++)
{
disabled.push(k);
}
}
if(v==10){
var k;
for(k=1;k<10;k++)
{
disabled.push(k);
}
}
if (!value.length && !s.allowLeadingZero) {
disabled.push(0);
}
return {
disabled: disabled,
invalid: (+v > s.max || +v < s.min) || (s.invalid ? inst._indexOf(s.invalid, +v) != -1 : false)
};
}
};
}
$('#numpad').mobiscroll().numpad({
theme: 'mobiscroll',
display: 'modal',
placeholder: '0',
fill: 'rtl',
allowLeadingZero: false,
min: 0,
scale: 0,
preset: 'mypreset',
buttons: ['set','cancel','clear'],
});
});
关于javascript - Mobiscroll Numpad 自定义预设,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30348788/
我尝试编写一个小应用程序来重新映射我的外部 Numpad 已经有一段时间了,但我被卡住了。我尝试这样做的方法是确定我的外部 Numpad 何时通过原始输入 API 发送击键,然后在按下外部 Numpa
我在运行 Ubuntu 的 virtual box 虚拟机上遇到了这个问题,有时,小键盘键有效,有时却无效。我认为这是一些错误,或者 guest 添加的一些问题,或者甚至与在激活小键盘 led 时启动
简而言之: 对于这段代码: Encoding.ASCII.GetBytes("‚") 我希望输出为 130,但这给了我 63。 我正在使用 Alt+0130 键入字符串。 最佳答案 关于我的设置: E
我正在做一个项目,当时我使用的是 mobiscroll 数字键盘。它适用于默认预设。 是否可以制作我自己的预设? 例如:我想为输入的数字设置一个千位分隔符,但这应该只是可视的,并且设置的值应该没有这些
我有一个键盘事件监听器,我正在监听 number pad key codes (1 到 9)用于激活数字锁定时;这很好用。但是,在我的应用程序中,我还希望允许使用修改键 (CTRL) 和数字键盘键。奇
我正在使用一个古老的平台模拟器,所以有时我需要按 Numpad Enter,但我的笔记本键盘没有这样做的选项。是否可以以某种方式模拟 Numpad Enter 键?我不介意解决方案是否笨拙。 最佳答案
我有一个 C++ (MFC) 应用程序需要检查计时器的键状态。如果用户按住某个键,我们会延迟某些代码的处理。 这是 keydown 的支票: if (!GetKeyboardState(keyStat
我已经使用 RegisterHotKey 为我的应用程序注册一个全局热键。我需要为应用程序注册 Control + Shift + 0(在小键盘中)。我已经使用以下代码片段注册了它: Register
我想发送 NumPad 键 (1-9) 的击键。 我尝试使用: SendKeys.SendWait("{NUMPAD1}"); 但是它说 System.ArgumentException: The k
我有这样的要求,即用户需要使用键盘数字小键盘上的键来控制分配给它的特定按钮并执行每个功能。 例子: 如果 Numpad 键 0 被按下,那么 Button0 将被触发。 或者 if(Numpad0 i
我正在编写一个应用程序,我需要在字符串中使用幂数。但我终究无法弄清楚如何输入 10 个字符的幂。我知道如果我按住 ALT + 0178,字符“²”会出现,但我如何输入诸如 3 甚至40? 我试过在线查
我在弄清楚如何区分键盘上的 Return 键和数字键盘上的 Enter 键时遇到了一些麻烦。 我已经成功地使用以下方法将其他键与重复键分开,例如 CTRL、ALT 和 Shift: if(e.keyL
我已经尝试过这个: actZoomReset.ShortCut := TextToShortCut('Ctrl+Num 0'); 但这没有任何作用(ShortCut = 0)。 编辑: 如果我尝试在
我已经尝试过这个: actZoomReset.ShortCut := TextToShortCut('Ctrl+Num 0'); 但这没有任何作用(ShortCut = 0)。 编辑: 如果我尝试在
我的代码中有一个 React 小键盘组件,我需要更改它的大小,但我无法正确修改它的 CSS、theme 或类似内容。 我已经意识到在 node_modules\react-numpad\build 中
我有一个 Angular 应用程序和电子邮件字段(文本字段)——在移动 View 中打开一个键盘,但不确定为什么。
我试过使用: 发送 key 方法: driver.send_keys("12345678"); 这不会给出任何错误,但甚至不会输入任何文本。 2.发送按键事件 HashMap numKeyObject
制作一个适合移动设备的网站,我有一个字段和一个提交按钮。该字段仅用于数字 - 就像邮政编码一样,所以我在输入中有 type="tel",它会调出数字小键盘。 "Go" 被替换为 "Next" 的问题,
我正在从事一个项目,需要模拟按键以在不同的应用程序中引起特定行为。 使用正在导入的 keybd_event 函数,一切都运行良好(可能有更好的方法,但它运行良好)。 现在我想添加对所有小键盘的特定支持
我在这里和谷歌搜索了一下,但我没有找到解决这个问题的方法。可能我没有使用正确的短语进行搜索,但希望你明白我的意思。 我正在使用 Ubuntu 18.04。我的 NumLock 总是关闭的。我在编码时没
我是一名优秀的程序员,十分优秀!