在最近的项目中,我需要一个十六进制掩码(0x0 - 0xFF)作为HTML表单上的输入字段之一。我知道我可以使用常规输入来获取十六进制值,然后我可以将其与其他表单提交验证一起验证。
但是,对于某些其他十进制字段,我使用ui.spinner.js (github)来允许用户点击向上/向下按钮来切换数字的值。输入十六进制值有一个类似的控件会很好。或者至少是一个比简单输入元素更“丰富”的控件。
有谁知道这样的插件是否存在?
提前致谢。
更新
我忽略了提到我正在使用的微调控件。我为这种困惑道歉。
答案 0 :(得分:1)
我从未见过一个人。虽然使用微调器做十六进制不应该太难 - 要么使用0x00 - 0xFF作为值的选择框,要么做一个0到256&的常规微调器。在spin()事件中转换为十六进制。
答案 1 :(得分:1)
我认为您可能仍然可以使用jQuery UI Spinner来执行此操作。我没有测试任何东西,但我会看两个可能的选项。
通过javascript创建UL,其LI的列表为0x00 - 0xff。然后,使用$("#your_ul_id").spinner();
尝试使用旋转事件处理程序通过转换为适当的十六进制来更改输出。
答案 2 :(得分:1)
我最近有同样的要求,我写了以下插件来解决它:https://github.com/bubasti/jQuery-Hex-Input
它正在使用jQuery小部件工厂,并且正在使用jQuery 1.9 Spinner小部件。
答案 3 :(得分:0)
通过编写自定义format
和parse
处理程序以及覆盖keypress事件来强制用户输入十六进制数字来解决此问题:
// Functions for dealing with hex values in spinners
var parseHex = function(val) {
var options = this;
if (options.group == '.')
val = val.replace('.', '');
if (options.point != '.')
val = val.replace(options.point, '.');
return parseFloat(parseInt(val, 16));
},
formatHex = function(num, places) {
var options = this,
regex = /(\d+)(\d{3})/,
result = ((isNaN(num) ? 0 : Math.abs(num)).toFixed(places)) + '';
for (result = result.replace('.', options.point); regex.test(result) && options.group; result=result.replace(regex, '$1'+options.group+'$2')) {};
return (num < 0 ? '-' : '') + options.prefix + parseInt(result).toString(16) + options.suffix;
},
keypressHex = function(e) {
var ch = String.fromCharCode(e.charCode || e.keyCode)
if (((ch >= '0') && (ch <= '9')) || ((ch >= 'a') && (ch <= 'f')))
return true;
return false;
};
jQuery('#myinput')
.spinner({
min: 0,
max: 255,
prefix: '0x',
format: formatHex,
parse: parseHex});
jQuery('#myinput').unbind('keypress.uispinner'); // Explicitly remove the controls keypress validation
jQuery('#myinput').bind('keypress.uispinner', keypressHex);