سؤال

في مشروع حديث، أحتاج إلى قناع عرافة (0x0 - 0xFF) كواحدة من حقول الإدخال على نموذج HTML. أعلم أنني أستطيع فقط استخدام مدخلات منتظمة للحصول على قيمة HEX، ثم يمكنني التحقق من صحةها مع التحقق من صحة تقديم النموذج الأخرى.

ومع ذلك، بالنسبة لبعض الحقول العشرية الأخرى التي أستخدمها ui.spinner.js (جيثب) للسماح للمستخدم بضرب الأزرار لأعلى / لأسفل لتبديل قيمة الرقم. سيكون من الجميل أن يكون لديك سيطرة مماثلة لإدخال قيم عرافة. أو على الأقل، عنصر تحكم "أكثر ثراء" قليلا من عنصر الإدخال البسيط.

هل يعرف أحد إذا كان هذا البرنامج المساعد موجودا؟

شكرا مقدما.

تحديث

أهملت أن أذكر السيطرة الدوار التي أستخدمها. اعتذاري للالتباس.

هل كانت مفيدة؟

المحلول 4

انتهى الأمر في حل هذا عن طريق كتابة مخصص format و parse المعالجات، بالإضافة إلى تجاوز حدث KeyPress لتنشيط المستخدم من كتابة أرقام Hex:

        // 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);

نصائح أخرى

أنا لم أر واحدة. لا ينبغي أن يكون من الصعب للغاية جعل spinner do hex على الرغم من - إما جعل مربع اختيار مع 0x00 - 0xFF كقيم، أو قم بإجراء سبينر منتظم من 0 - 256 وتحويل إلى HEX في حدث SPIN ().

أنا فكر في ربما لا تزال تستخدم سبينر jquery ui للقيام بذلك. أنا لم اختبر أي شيء ولكني أنظر إلى اثنين من الخيارات الممكنة.

  1. قم بإنشاء UL من خلال JavaScript، مع قائمة Li في 0x00 - 0xFF. ثم استخدام $("#your_ul_id").spinner();

  2. حاول استخدام معالج حدث الدوران لتغيير الإخراج عن طريق التحويل إلى Hex المناسب.

لقد حصلت مؤخرا على نفس الشرط، وكتبت البرنامج المساعد التالي لحلها: https://github.com/bubasti/jquery-hex-input.

انها تستخدم مصنع jQuery widget ويستفيد من jquery 1.9 Spinner Widget.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top