3

最近のプロジェクトでは、HTMLフォームの入力フィールドの1つとして16進マスク(0x0〜0xFF)が必要です。通常の入力を使用して16進値を取得し、それを他のフォーム送信検証と一緒に検証できることはわかっています。

ただし、他の一部の小数フィールドでは、ui.spinner.js(github)を使用して、ユーザーが上/下ボタンを押して数値の値を切り替えることができるようにしています。16進値を入力するための同様のコントロールがあると便利です。または、少なくとも、単純な入力要素よりも少し「リッチ」なコントロール。

そのようなプラグインが存在するかどうか誰かが知っていますか?

前もって感謝します。

アップデート

私が使用しているスピナーコントロールについては言及しませんでした。混乱をお詫び申し上げます。

4

4 に答える 4

1

私は一度も見たことがありません。ただし、スピナーを 16 進数にするのはそれほど難しくありません。値として 0x00 ~ 0xFF の選択ボックスを作成するか、0 ~ 256 の通常のスピナーを実行して、spin() イベントで 16 進数に変換します。

于 2010-02-09T16:29:38.730 に答える
1

おそらく、jQuery UI Spinner を使用してこれを行うことができると思います。私は何もテストしていませんが、2 つの可能なオプションを検討します。

  1. JavaScript を使用して UL を作成し、その LI は 0x00 ~ 0xff のリストです。次に、使用します$("#your_ul_id").spinner();

  2. スピン イベント ハンドラーを使用して、適切な 16 進数に変換して出力を変更してみてください。

于 2010-02-09T16:35:18.357 に答える
1

最近同じ要件があり、それを解決するために次のプラグインを作成しました: https://github.com/bubasti/jQuery-Hex-Input

jQuery ウィジェット ファクトリを使用しており、jQuery 1.9 Spinner ウィジェットを使用しています。

于 2013-01-13T23:26:15.200 に答える
0

カスタムformatparseハンドラーを作成し、keypress イベントをオーバーライドして、ユーザーが 16 進数を入力できるようにすることで、これを解決しました。

        // 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);
于 2010-02-10T16:11:17.287 に答える