Javascript jQueryUI-将数字输入为十六进制的插件?

Javascript jQueryUI-将数字输入为十六进制的插件?,javascript,jquery,jquery-plugins,spinner,Javascript,Jquery,Jquery Plugins,Spinner,在最近的一个项目中,我需要一个十六进制掩码0x0-0xFF作为HTML表单上的输入字段之一。我知道我可以使用一个常规输入来获取十六进制值,然后我可以将其与其他表单提交验证一起进行验证 但是,对于其他一些十进制字段,我使用它来允许用户点击向上/向下按钮来切换数字的值。最好有一个类似的控件来输入十六进制值。或者至少是一个比简单输入元素更丰富的控件 有人知道这样的插件是否存在吗 提前谢谢 更新 我忘了提到我正在使用的微调器控件。很抱歉给你添麻烦。我从来没见过。但是,让微调器执行十六进制应该不会太难-或

在最近的一个项目中,我需要一个十六进制掩码0x0-0xFF作为HTML表单上的输入字段之一。我知道我可以使用一个常规输入来获取十六进制值,然后我可以将其与其他表单提交验证一起进行验证

但是,对于其他一些十进制字段,我使用它来允许用户点击向上/向下按钮来切换数字的值。最好有一个类似的控件来输入十六进制值。或者至少是一个比简单输入元素更丰富的控件

有人知道这样的插件是否存在吗

提前谢谢

更新


我忘了提到我正在使用的微调器控件。很抱歉给你添麻烦。

我从来没见过。但是,让微调器执行十六进制应该不会太难-或者使用0x00-0xFF作为值创建一个选择框,或者在微调事件中执行一个从0-256的常规微调器并转换为十六进制。

我认为您可能仍然可以使用jQuery UI微调器来执行此操作。我没有测试任何东西,但我会考虑两种可能的选择

通过javascript创建一个UL,其LI的列表为0x00-0xff。然后,使用$your_ul_id.spinner

尝试使用自旋事件处理程序通过转换为适当的十六进制来更改输出


通过编写自定义格式和解析处理程序,以及重写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);

我最近也有同样的需求,我编写了以下插件来解决这个问题:


它正在使用jQuery小部件工厂,并且正在使用jQuery 1.9微调器小部件。

非常感谢!!!OP的解决方案完全失败了,像“格式”、“解析”和“前缀”这样的选项似乎已经不存在了,这看起来很有希望。只是,是否可以将展开/折叠条目方法设置为可选?我只想使用微调器?在微调器内的按键验证方面,我可以如何处理?在进一步的调查中,我发现这并不真正适合我的需要。为了使spin事件逻辑中的convert to hex有效,我缺少的主要部分是Spinner已经在内部预解析了显示值,如果您有一个0x前缀,这是可以的,但是如果没有,则会中断,因为+用于强制该值。我现在基于在的调查推出了自己的解决方案,并希望最终有一个良好的可重用性和通用性。