autoNumeric是一个用于国际货币格式和数字格式的有用JavaScript库。
它几乎支持欧洲、北美和南美、亚洲和印度使用的所有主要国际数字格式和货币符号。
1.安装和导入。
# Yarn $ yarn add autonumeric # NPM $ npm install autonumeric --save
import AutoNumeric from 'autonumeric';
2.或者在网页上包含最新的autoNumeric.js
<script src="/path/to/autoNumeric.js"></script> <!-- from a cdn --> <script src="//unpkg.com/autonumeric"></script>
3.在页面上创建一个普通输入字段。
<form> <input type="text" class="demo"> </form>
4.初始化autoNumeric库并指定货币符号。完成。
new AutoNumeric('.demo', { currencySymbol : '$' });
5.所有选项和默认值。您还可以通过HTML5数据属性传递以下选项。
/* Defines if the decimal places should be padded with zeroes * `true` : always pad decimals with zeros (ie. '12.3400') * `false` : never pad with zeros (ie. '12.34') * `'floats'` : pad with zeroes only when there are decimals (ie. '12' and '12.3400') * Note: setting allowDecimalPadding to 'false' will override the 'decimalPlaces' setting. */ allowDecimalPadding: { always: true, never : false, floats: 'floats', }, /* Defines if the decimal character or decimal character alternative should be accepted when there is already a decimal character shown in the element. * If set to `true`, any decimal character input will be accepted and will subsequently modify the decimal character position, as well as the `rawValue`. * If set to `false`, the decimal character and its alternative key will be dropped as before. This is the default setting. */ alwaysAllowDecimalCharacter: { alwaysAllow: true, doNotAllow: false, }, /* Defines where should be positioned the caret on focus * null : Do not enforce any caret positioning on focus (this is needed when using `selectOnFocus`) * `'start'` : put the caret of the far left side of the value (excluding the positive/negative sign and currency symbol, if any) * `'end'` : put the caret of the far right side of the value (excluding the positive/negative sign and currency symbol, if any) * `'decimalLeft'` : put the caret of the left of the decimal character if any * `'decimalRight'` : put the caret of the right of the decimal character if any */ caretPositionOnFocus: { start : 'start', end : 'end', decimalLeft : 'decimalLeft', decimalRight : 'decimalRight', doNoForceCaretPosition: null, }, /* Defines if a local list of AutoNumeric objects should be kept when initializing this object. * This list is used by the `global.*` functions. */ createLocalList: { createList : true, doNotCreateList: false, }, /* Defines the currency symbol string. * It can be a string of more than one character (allowing for instance to use a space on either side of it, example: '$ ' or ' $') * cf. https://en.wikipedia.org/wiki/Currency_symbol */ currencySymbol: { none : '', currencySign : '¤', austral : 'â³', // ARA australCentavo: '¢', baht : '฿', // THB cedi : 'âµ', // GHS cent : '¢', colon : 'â¡', // CRC cruzeiro : 'â¢', // BRB - Not used anymore since 1993 dollar : '$', dong : 'â«', // VND drachma : 'â¯', // GRD (or 'ÎÏÏ.' or 'ÎÏ.') dram : 'âÖ', // AMD european : 'â ', // XEU (old currency before the Euro) euro : 'â¬', // EUR florin : 'Æ', franc : 'â£', // FRF guarani : 'â²', // PYG hryvnia : 'â´', // гÑн kip : 'â', // LAK att : 'àºàº±àº', // cents of the Kip lepton : 'Î.', // cents of the Drachma lira : 'âº', // TRY liraOld : 'â¤', lari : 'â¾', // GEL mark : 'â³', mill : 'â¥', naira : 'â¦', // NGN peseta : 'â§', peso : 'â±', // PHP pfennig : 'â°', // cents of the Mark pound : '£', real : 'R$ ', // Brazilian real riel : 'á', // KHR ruble : 'â½', // RUB rupee : 'â¹', // INR rupeeOld : 'â¨', shekel : 'âª', shekelAlt : 'ש״×ââ', taka : '৳', // BDT tenge : 'â¸', // KZT togrog : 'â®', // MNT won : 'â©', yen : 'Â¥', }, /* Defines where the currency symbol should be placed (before of after the numbers) * for prefix currencySymbolPlacement: "p" (default) * for suffix currencySymbolPlacement: "s" */ currencySymbolPlacement: { prefix: 'p', suffix: 's', }, /* Defines what decimal separator character is used */ decimalCharacter: { comma : ',', dot : '.', middleDot : '·', arabicDecimalSeparator : 'Ù«', decimalSeparatorKeySymbol: 'â', }, /* Allow to declare an alternative decimal separator which is automatically replaced by `decimalCharacter` when typed. * This is used by countries that use a comma ',' as the decimal character and have keyboards with a numeric pads that have * a period 'full stop' as the decimal character (France or Spain for instance). */ decimalCharacterAlternative: { none : null, comma: ',', dot : '.', }, /* Defines the default number of decimal places to show on the formatted value, and keep for the precision. * Incidentally, since we need to be able to show that many decimal places, this also defines the raw value precision by default. */ decimalPlaces: { none : 0, one : 1, two : 2, three: 3, four : 4, five : 5, six : 6, }, /* Defines how many decimal places should be kept for the raw value (ie. This is the precision for float values). * * If this option is set to `null` (which is the default), then the value of `decimalPlaces` is used for `decimalPlacesRawValue` as well. * Note: Setting this to a lower number of decimal places than the one to be shown will lead to confusion for the users. */ decimalPlacesRawValue: { useDefault: null, none : 0, one : 1, two : 2, three : 3, four : 4, five : 5, six : 6, }, /* Defines how many decimal places should be visible when the element is unfocused. * If this is set to `null`, then this option is ignored, and the `decimalPlaces` option value will be used instead. * This means this is optional ; if omitted the decimal places will be the same when the input has the focus. * * This option can be used in conjonction with the two other `scale*` options, which allows to display a different formatted value when the element is unfocused, while another formatted value is shown when focused. * For those `scale*` options to have any effect, `divisorWhenUnfocused` must not be `null`. */ decimalPlacesShownOnBlur: { useDefault: null, none : 0, one : 1, two : 2, three : 3, four : 4, five : 5, six : 6, }, /* Defines how many decimal places should be visible when the element has the focus. * If this is set to `null`, then this option is ignored, and the `decimalPlaces` option value will be used instead. * * Example: * For instance if `decimalPlacesShownOnFocus` is set to `5` and the default number of decimal places is `2`, then on focus `1,000.12345` will be shown, while without focus `1,000.12` will be set back. * Note 1: the results depends on the rounding method used. * Note 2: the `getNumericString()` method returns the extended decimal places */ decimalPlacesShownOnFocus: { useDefault: null, none : 0, one : 1, two : 2, three : 3, four : 4, five : 5, six : 6, }, /* Helper option for ASP.NET postback * This should be set as the value of the unformatted default value * examples: * no default value="" {defaultValueOverride: ""} * value=1234.56 {defaultValueOverride: '1234.56'} */ defaultValueOverride: { doNotOverride: null, }, /* Defines how many numbers should be grouped together (usually for the thousand separator) * - "2", results in 99,99,99,999 India's lakhs * - "2s", results in 99,999,99,99,999 India's lakhs scaled * - "3", results in 999,999,999 (default) * - "4", results in 9999,9999,9999 used in some Asian countries * Note: This option does not accept other grouping choice. */ digitalGroupSpacing: { two : '2', twoScaled: '2s', three : '3', four : '4', }, /* Defines the thousand grouping separator character * Example : If `'.'` is set, then you'll get `'1.234.567'` */ digitGroupSeparator: { comma : ',', dot : '.', normalSpace : ' ', thinSpace : '\u2009', narrowNoBreakSpace : '\u202f', noBreakSpace : '\u00a0', noSeparator : '', apostrophe : `'`, arabicThousandsSeparator: 'Ù¬', dotAbove : 'Ë', privateUseTwo : 'â', // \u0092 }, /* The `divisorWhenUnfocused` divide the element value on focus. * On blur, the element value is multiplied back. * * Example : Display percentages using { divisorWhenUnfocused: 100 } (or directly in the Html with `<input data-divisor-when-unfocused="100">`) * The divisor value does not need to be an integer, but please understand that Javascript has limited accuracy in math ; use with caution. * Note: The `getNumericString` method returns the full value, including the 'hidden' decimals. */ divisorWhenUnfocused: { none : null, percentage: 100, permille : 1000, basisPoint: 10000, }, /* Defines what should be displayed in the element if the raw value is an empty string (''). * - 'focus' : The currency sign is displayed when the input receives focus (default) * - 'press' : The currency sign is displayed whenever a key is being pressed * - 'always' : The currency sign is always displayed * - 'zero' : A zero is displayed ('rounded' with or without a currency sign) if the input has no value on focus out * - 'min' : The minimum value is displayed if the input has no value on focus out * - 'max' : The maximum value is displayed if the input has no value on focus out * - 'null' : When the element is empty, the `rawValue` and the element value/text is set to `null`. This also allows to set the value to `null` using `anElement.set(null)`. */ emptyInputBehavior: { focus : 'focus', press : 'press', always: 'always', zero : 'zero', min : 'min', max : 'max', null : 'null', }, /* Defines if the custom and native events triggered by AutoNumeric should bubble up or not. */ eventBubbles: { bubbles: true, doesNotBubble: false, }, /* Defines if the custom and native events triggered by AutoNumeric should be cancelable. */ eventIsCancelable: { isCancelable: true, isNotCancelable: false, }, /* This option is the 'strict mode' (aka 'debug' mode), which allows autoNumeric to strictly analyse the options passed, and fails if an unknown options is used in the settings object. * You should set that to `true` if you want to make sure you are only using 'pure' autoNumeric settings objects in your code. * If you see uncaught errors in the console and your code starts to fail, this means somehow those options gets polluted by another program (which usually happens when using frameworks). */ failOnUnknownOption: { fail : true, ignore: false, }, /* Determine if the default value will be formatted on initialization. */ formatOnPageLoad: { format : true, // automatically formats the default value on initialization doNotFormat: false, // will not format the default value on initialization }, /* Defines if the 'formula mode' can be activated by the user. * If set to `true`, then the user can enter the formula mode by entering the '=' character. * He will then be allowed to enter any simple math formula using numeric characters as well as the following operators +, -, *, /, ( and ). * The formula mode is closed when the user either validate their math expression using the `Enter` key, or when the element is blurred. * If the formula is invalid, the previous valid `rawValue` is set back, and the `autoNumeric:invalidFormula` event is sent. * When a valid formula is accepted, then its result is `set()`, and the `autoNumeric:validFormula` event is sent. * * By default, this mode is disabled. */ formulaMode: { enabled : true, disabled: false, }, /* Set the undo/redo history table size. * Each record keeps the raw value as well and the last known caret/selection positions. */ historySize: { verySmall: 5, small : 10, medium : 20, large : 50, veryLarge: 100, insane : Number.MAX_SAFE_INTEGER, }, /* Defines the name of the CSS class to use on contenteditable-enabled elements when the value is invalid * This is not used when the HTML element used is an input. */ invalidClass: 'an-invalid', /* Allow the user to 'cancel' and undo the changes he made to the given autonumeric-managed element, by pressing the 'Escape' key. * Whenever the user 'validate' the input (either by hitting 'Enter', or blurring the element), the new value is saved for subsequent 'cancellation'. * * The process : * - save the input value on focus * - if the user change the input value, and hit `Escape`, then the initial value saved on focus is set back * - on the other hand if the user either have used `Enter` to validate (`Enter` throws a change event) his entries, or if the input value has been changed by another script in the mean time, then we save the new input value * - on a successful 'cancel', select the whole value (while respecting the `selectNumberOnly` option) * - bonus; if the value has not changed, hitting 'Esc' just select all the input value (while respecting the `selectNumberOnly` option) */ isCancellable: { cancellable : true, notCancellable: false, }, /* Controls the leading zero behavior * - 'allow' : allows leading zeros to be entered. Zeros will be truncated when entering additional digits. On focusout zeros will be deleted * - 'deny' : allows only one leading zero on values that are between 1 and -1 * - 'keep' : allows leading zeros to be entered. on focusout zeros will be retained */ leadingZero: { allow: 'allow', deny : 'deny', keep : 'keep', }, /* Defines the maximum possible value a user can enter. * Notes: * - this value must be a string and use the period for the decimal point * - this value needs to be larger than `minimumValue` */ maximumValue: { tenTrillions : '10000000000000', // 10000 billions oneBillion : '1000000000', zero : '0', }, /* Defines the minimum possible value a user can enter. * Notes: * - this value must be a string and use the period for the decimal point * - this value needs to be smaller than `maximumValue` * - if this is superior to 0, then you'll effectively prevent your user to entirely delete the content of your element */ minimumValue: { tenTrillions : '-10000000000000', // 10000 billions oneBillion : '-1000000000', zero : '0', }, /* Allows the user to increment or decrement the element value with the up and down arrow keys. * The behavior is similar to the mouse wheel one. * The up and down arrow keys behavior can be modified by the `upDownStep` option. * This `upDownStep` option can be used in two ways, either by setting: * - a 'fixed' step value (`upDownStep : 1000`), or * - the 'progressive' string (`upDownStep : 'progressive'`), which will then activate a special mode where the step is automatically calculated based on the element value size. */ modifyValueOnUpDownArrow: { modifyValue: true, doNothing : false, }, /* Allows the user to increment or decrement the element value with the mouse wheel. * The behavior is similar to the up/down arrow one. * The wheel behavior can be modified by the `wheelStep` option. * This `wheelStep` option can be used in two ways, either by setting: * - a 'fixed' step value (`wheelStep : 1000`), or * - the 'progressive' string (`wheelStep : 'progressive'`), which will then activate a special mode where the step is automatically calculated based on the element value size. * * Note : * You can activate/deactivate the wheel event for each `wheelOn` option value by using the 'Shift' modifier key while using the mouse wheel. */ modifyValueOnWheel: { modifyValue: true, doNothing : false, }, /* Adds brackets on negative values (ie. transforms '-$ 999.99' to '($999.99)') * Those brackets are visible only when the field does NOT have the focus. * The left and right symbols should be enclosed in quotes and separated by a comma. */ negativeBracketsTypeOnBlur: { parentheses : '(,)', brackets : '[,]', chevrons : '<,>', curlyBraces : '{,}', angleBrackets : 'ã,ã', japaneseQuotationMarks: 'ï½¢,ï½£', halfBrackets : '⸤,⸥', whiteSquareBrackets : 'â¦,â§', quotationMarks : 'â¹,âº', guillemets : '«,»', none : null, // This is the default value, which deactivate this feature }, /* Placement of the negative/positive sign relative to the `currencySymbol` option. * * Example: * // Default values * -1,234.56 => default no options required * $-1,234.56 => {currencySymbol: "$", negativePositiveSignPlacement: "r"} // Default if negativePositiveSignPlacement is 'null' and currencySymbol is not empty * * // Sign on the left hand side of the whole number * -$1,234.56 => {currencySymbol: "$"} or {currencySymbol: "$", negativePositiveSignPlacement: "l"} * -1,234.56$ => {currencySymbol: "$", currencySymbolPlacement: "s", negativePositiveSignPlacement: "p"} // Default if negativePositiveSignPlacement is 'null' and currencySymbol is not empty * * // Sign on the right hand side of the whole number * 1,234.56- => {negativePositiveSignPlacement: "s"} * $1,234.56- => {currencySymbol: "$", negativePositiveSignPlacement: "s"} * 1,234.56-$ => {currencySymbol: "$", currencySymbolPlacement: "s"} * 1,234.56$- => {currencySymbol: "$", currencySymbolPlacement: "s", negativePositiveSignPlacement: "r"} */ negativePositiveSignPlacement: { prefix: 'p', suffix: 's', left : 'l', right : 'r', none : null, }, /* Defines the negative sign symbol. * It can be a string of only one character. */ negativeSignCharacter: { hyphen : '-', minus : 'â', heavyMinus : 'â', fullWidthHyphen: 'ï¼', circledMinus : 'â', squaredMinus : 'â', triangleMinus : '⨺', plusMinus : '±', minusPlus : 'â', dotMinus : 'â¸', minusTilde : 'â', not : '¬', }, /* * Defines if the negative sign should be toggled when hitting the negative or positive key multiple times. * When `toggle` is used, using the same '-' on '+' key will toggle between a positive and negative value. * When `doNotToggle` is used, using '-' will always set the value negative, and '+' will always set the value positive. */ negativePositiveSignBehavior: { toggle : true, doNotToggle: false, }, /* Defines if the element should have event listeners activated on it. * By default, those event listeners are only added to <input> elements and html element with the `contenteditable` attribute set to `true`, but not on the other html tags. * This allows to initialize elements without any event listeners. * Warning: Since AutoNumeric will not check the input content after its initialization, using some autoNumeric methods afterwards *will* probably leads to formatting problems. */ noEventListeners: { noEvents : true, addEvents: false, }, /* Manage how autoNumeric react when the user tries to paste an invalid number. * - 'error' : (This is the default behavior) The input value is not changed and an error is output in the console. * - 'ignore' : idem than 'error', but fail silently without outputting any error/warning in the console. * - 'clamp' : if the pasted value is either too small or too big regarding the minimumValue and maximumValue range, then the result is clamped to those limits. * - 'truncate' : autoNumeric will insert as many pasted numbers it can at the initial caret/selection, until everything is pasted, or the range limit is hit. * The non-pasted numbers are dropped and therefore not used at all. * - 'replace' : autoNumeric will first insert as many pasted numbers it can at the initial caret/selection, then if the range limit is hit, it will try * to replace one by one the remaining initial numbers (on the right side of the caret) with the rest of the pasted numbers. * * Note 1 : A paste content starting with a negative sign '-' will be accepted anywhere in the input, and will set the resulting value as a negative number * Note 2 : A paste content starting with a number will be accepted, even if the rest is gibberish (ie. '123foobar456'). * Only the first number will be used (here '123'). * Note 3 : The paste event works with the `decimalPlacesShownOnFocus` option too. */ onInvalidPaste: { error : 'error', ignore : 'ignore', clamp : 'clamp', truncate: 'truncate', replace : 'replace', }, /* Defines how the value should be formatted when wanting a 'localized' version of it. * - null or 'string' => 'nnnn.nn' or '-nnnn.nn' as text type. This is the default behavior. * - 'number' => nnnn.nn or -nnnn.nn as a Number (Warning: this works only for integers inferior to Number.MAX_SAFE_INTEGER) * - ',' or '-,' => 'nnnn,nn' or '-nnnn,nn' * - '.-' => 'nnnn.nn' or 'nnnn.nn-' * - ',-' => 'nnnn,nn' or 'nnnn,nn-' * * Note: The hyphen '-' is translated to the custom negative sign defined in `negativeSignCharacter` */ outputFormat: { string : 'string', number : 'number', dot : '.', negativeDot : '-.', comma : ',', negativeComma: '-,', dotNegative : '.-', commaNegative: ',-', none : null, }, /* Defines if AutoNumeric should let the user override the minimum and/or maximum limits when he types numbers in the element. * - 'ceiling' Strictly adheres to `maximumValue` and ignores the `minimumValue` settings * It allows the user to enter anything between -â `and maximumValue` * If `maximumValue` is less than 0, then it will prevent the user emptying the field or typing value above `maximumValue`, making sure the value entered is always valid * - 'floor' Strictly adheres to `minimumValue` and ignores the `maximumValue` settings * It allows the user to enter anything between `minimumValue` and +â * If `minimumValue` is higher than 0, then it will prevent the user emptying the field or typing value below `minimumValue`, making sure the value entered is always valid * - 'ignore' Ignores both the `minimumValue` and `maximumValue` settings * When using this option, the field will always be valid range-wise * - 'invalid' The user can temporarily type out-of-bound values. In doing so, the invalid state is set on the field. * Whenever an invalid value is typed, an 'autoNumeric:invalidValue' event is sent * When the value is correctly set back within the limit boundaries, the invalid state is removed, and the 'autoNumeric:correctedValue' event is sent * - 'doNotOverride' Strictly adheres to the `maximumValue` and `minimumValue` settings * This is the default behavior * If `0` is out of the min/max range, this will prevent the user clearing the input field, making sure the value entered is always valid */ overrideMinMaxLimits: { ceiling : 'ceiling', floor : 'floor', ignore : 'ignore', invalid : 'invalid', doNotOverride: null, }, /* Defines the positive sign symbol. * It can be a string of only one character. * This is shown only if `showPositiveSign` is set to `true`. */ positiveSignCharacter: { plus : '+', fullWidthPlus : 'ï¼', heavyPlus : 'â', doublePlus : '⧺', triplePlus : '⧻', circledPlus : 'â', squaredPlus : 'â', trianglePlus : '⨹', plusMinus : '±', minusPlus : 'â', dotPlus : 'â', altHebrewPlus : '﬩', normalSpace : ' ', thinSpace : '\u2009', narrowNoBreakSpace: '\u202f', noBreakSpace : '\u00a0', }, /* The `rawValueDivisor` divides the formatted value shown in the AutoNumeric element and store the result in `rawValue`. * @example { rawValueDivisor: '100' } or <input data-raw-value-divisor="100"> * Given the `0.01234` raw value, the formatted value will be displayed as `'1.234'`. * This is useful when displaying percentage for instance, and avoid the need to divide/multiply by 100 between the number shown and the raw value. */ rawValueDivisor: { none : null, percentage: 100, permille : 1000, basisPoint: 10000, }, /* Defines if the element (`<input>` or another allowed html tag) should be set as read-only on initialization. * When set to `true`, then: * - the `readonly` html property is added to the <input> element on initialization, or * - the `contenteditable` attribute is set to `false` on non-input elements. */ readOnly: { readOnly : true, readWrite: false, }, /* Defines the rounding method to use. * roundingMethod: "S", Round-Half-Up Symmetric (default) * roundingMethod: "A", Round-Half-Up Asymmetric * roundingMethod: "s", Round-Half-Down Symmetric (lower case s) * roundingMethod: "a", Round-Half-Down Asymmetric (lower case a) * roundingMethod: "B", Round-Half-Even "Bankers Rounding" * roundingMethod: "U", Round Up "Round-Away-From-Zero" * roundingMethod: "D", Round Down "Round-Toward-Zero" - same as truncate * roundingMethod: "C", Round to Ceiling "Toward Positive Infinity" * roundingMethod: "F", Round to Floor "Toward Negative Infinity" * roundingMethod: "N05" Rounds to the nearest .05 => same as "CHF" used in 1.9X and still valid * roundingMethod: "U05" Rounds up to next .05 * roundingMethod: "D05" Rounds down to next .05 */ roundingMethod: { halfUpSymmetric : 'S', halfUpAsymmetric : 'A', halfDownSymmetric : 's', halfDownAsymmetric : 'a', halfEvenBankersRounding : 'B', upRoundAwayFromZero : 'U', downRoundTowardZero : 'D', toCeilingTowardPositiveInfinity: 'C', toFloorTowardNegativeInfinity : 'F', toNearest05 : 'N05', toNearest05Alt : 'CHF', upToNext05 : 'U05', downToNext05 : 'D05', }, /* Set to `true` to allow the `decimalPlacesShownOnFocus` value to be saved with sessionStorage * If IE 6 or 7 is detected, the value will be saved as a session cookie. */ saveValueToSessionStorage: { save : true, doNotSave: false, }, /* Determine if the select all keyboard command will select the complete input text, or only the input numeric value * Note : If the currency symbol is between the numeric value and the negative sign, only the numeric value will be selected */ selectNumberOnly: { selectNumbersOnly: true, selectAll : false, }, /* Defines if the element value should be selected on focus. * Note: The selection is done using the `selectNumberOnly` option. */ selectOnFocus: { select : true, doNotSelect: false, }, /* Defines how the serialize functions should treat the spaces. * Those spaces ' ' can either be converted to the plus sign '+', which is the default, or to '%20'. * Both values being valid per the spec (http://www.w3.org/Addressing/URL/uri-spec.html). * Also see the summed up answer on http://stackoverflow.com/a/33939287. * * tl;dr : Spaces should be converted to '%20' before the '?' sign, then converted to '+' after. * In our case since we serialize the query, we use '+' as the default (but allow the user to get back the old *wrong* behavior). */ serializeSpaces: { plus : '+', percent: '%20', }, /* Defines if the element value should be converted to the raw value on focus (and back to the formatted on blur). * If set to `true`, then autoNumeric remove the thousand separator, currency symbol and suffix on focus. * Example: * If the input value is '$ 1,999.88 suffix', on focus it becomes '1999.88' and back to '$ 1,999.88 suffix' on blur. */ showOnlyNumbersOnFocus: { onlyNumbers: true, showAll : false, }, /* Allow the positive sign symbol `+` to be displayed for positive numbers. * By default, this positive sign is not shown. * The sign placement is controlled by the 'negativePositiveSignPlacement' option, mimicking the negative sign placement rules. */ showPositiveSign: { show: true, hide: false, }, /* Defines if warnings should be shown in the console. * Those warnings can be ignored, but are usually printed when something could be improved by the user (ie. option conflicts). */ showWarnings: { show: true, // All warning are shown hide: false, // No warnings are shown, only the thrown errors }, /* Defines the rules that calculate the CSS class(es) to apply on the element, based on the raw unformatted value. * This can also be used to call callbacks whenever the `rawValue` is updated. * Important: all callbacks must return `null` if no ranges/userDefined classes are selected * @example * { * positive : 'autoNumeric-positive', // Or `null` to not use it * negative : 'autoNumeric-negative', * ranges : [ * { min: 0, max: 25, class: 'autoNumeric-red' }, * { min: 25, max: 50, class: 'autoNumeric-orange' }, * { min: 50, max: 75, class: 'autoNumeric-yellow' }, * { min: 75, max: Number.MAX_SAFE_INTEGER, class: 'autoNumeric-green' }, * ], * userDefined: [ * // If 'classes' is a string, set it if `true`, remove it if `false` * { callback: rawValue => { return true; }, classes: 'thisIsTrue' }, * // If 'classes' is an array with only 2 elements, set the first class if `true`, the second if `false` * { callback: rawValue => rawValue % 2 === 0, classes: ['autoNumeric-even', 'autoNumeric-odd'] }, * // Return only one index to use on the `classes` array (here, 'class3') * { callback: rawValue => { return 2; }, classes: ['class1', 'class2', 'class3'] }, * // Return an array of indexes to use on the `classes` array (here, 'class1' and 'class3') * { callback: rawValue => { return [0, 2]; }, classes: ['class1', 'class2', 'class3'] }, * // If 'classes' is `undefined` or `null`, then the callback is called with the AutoNumeric object passed as a parameter * { callback: anElement => { return anElement.getFormatted(); } }, * ], * } */ styleRules: { none : null, positiveNegative : { positive: 'autoNumeric-positive', negative: 'autoNumeric-negative', }, range0To100With4Steps: { ranges: [ { min: 0, max: 25, class: 'autoNumeric-red' }, { min: 25, max: 50, class: 'autoNumeric-orange' }, { min: 50, max: 75, class: 'autoNumeric-yellow' }, { min: 75, max: 100, class: 'autoNumeric-green' }, ], }, evenOdd : { userDefined: [ { callback: rawValue => rawValue % 2 === 0, classes: ['autoNumeric-even', 'autoNumeric-odd'] }, ], }, rangeSmallAndZero : { userDefined: [ { callback : rawValue => { if (rawValue >= -1 && rawValue < 0) { return 0; } if (Number(rawValue) === 0) { return 1; } if (rawValue > 0 && rawValue <= 1) { return 2; } return null; // In case the rawValue is outside those ranges }, classes: [ 'autoNumeric-small-negative', 'autoNumeric-zero', 'autoNumeric-small-positive', ], }, ], }, }, /* Add a text on the right hand side of the element value. * This suffix text can have any characters in its string, except numeric characters and the negative/positive sign. * Example: ' dollars' */ suffixText: { none : '', percentage: '%', permille : 'â°', basisPoint: 'â±', }, /* The three options (divisorWhenUnfocused, decimalPlacesShownOnBlur & symbolWhenUnfocused) handle scaling of the input when the input does not have focus * Please note that the non-scaled value is held in data and it is advised that you use the `saveValueToSessionStorage` option to ensure retaining the value * ["divisor", "decimal places", "symbol"] * Example: with the following options set {divisorWhenUnfocused: '1000', decimalPlacesShownOnBlur: '1', symbolWhenUnfocused: ' K'} * Example: focusin value "1,111.11" focusout value "1.1 K" */ /* The `symbolWhenUnfocused` option is a symbol placed as a suffix when not in focus. * This is optional too. */ symbolWhenUnfocused: { none : null, percentage: '%', permille : 'â°', basisPoint: 'â±', }, /* Defines if the element value should be unformatted when the user hover his mouse over it while holding the `Alt` key. * Unformatting there means that this removes any non-number characters and displays the *raw* value, as understood by Javascript (ie. `12.34` is a valid number, while `12,34` is not). * * We reformat back before anything else if : * - the user focus on the element by tabbing or clicking into it, * - the user releases the `Alt` key, and * - if we detect a mouseleave event. * * We unformat again if : * - while the mouse is over the element, the user hit `Alt` again */ unformatOnHover: { unformat : true, doNotUnformat: false, //TODO Rename to `keepFormat` }, /* Removes the formatting and use the raw value in each autoNumeric elements of the parent form element, on the form `submit` event. * The output format is a numeric string (nnnn.nn or -nnnn.nn). */ unformatOnSubmit: { unformat : true, keepCurrentValue: false, }, /* That option is linked to the `modifyValueOnUpDownArrow` one and will only be used if the latter is set to `true`. * This option will modify the up/down arrow behavior and can be used in two ways, either by setting : * - a 'fixed' step value (a positive float or integer number (ex: `1000`)), or * - the `'progressive'` string. * * The 'fixed' mode always increment/decrement the element value by that amount, while respecting the `minimumValue` and `maximumValue` settings. * The 'progressive' mode will increment/decrement the element value based on its current value. The bigger the number, the bigger the step, and vice versa. */ upDownStep: { progressive: 'progressive', }, /* Provides a way for automatically replacing the formatted value with a pre-defined string, when the raw value is equal to a specific value * Here you can specify as many 'conversion' as needed. */ valuesToStrings: { none : null, zeroDash : { 0: '-', }, oneAroundZero: { '-1': 'Min', 1 : 'Max', }, }, /* Defines if the AutoNumeric element should watch external changes made without using `.set()`, but by using the basic `aNElement.node().value = 42` notation. * If set to `watch`, then AutoNumeric will format the new value using `.set()` internally. * Otherwise it will neither format it, nor save it in the history. */ watchExternalChanges: { watch : true, doNotWatch: false, }, /* Defines when the wheel event will increment or decrement the element value. * When set to `'focus'`, the AutoNumeric-managed element needs to be focused for the wheel event to change the value. * When set to `'hover'`, using the wheel event while the mouse is hovering the element is sufficient (no focus needed). * * Note : * When `wheelOn` is set to `'focus'`, you can use the 'Shift' modifier key while using the mouse wheel in order to temporarily activate the increment/decrement feature even if the element is not focused. * When `wheelOn` is set to `'hover'`, you can use the 'Shift' modifier key while using the mouse wheel in order to temporarily disable the increment/decrement feature even if the element is not hovered. */ wheelOn: { focus: 'focus', hover: 'hover', }, /* That option is linked to the `modifyValueOnWheel` one and will only be used if the latter is set to `true`. * This option will modify the wheel behavior and can be used in two ways, either by setting : * - a 'fixed' step value (a positive float or integer (ex: number `1000`)), or * - the `'progressive'` string. * * The 'fixed' mode always increment/decrement the element value by that amount, while respecting the `minimumValue` and `maximumValue` settings. * The 'progressive' mode will increment/decrement the element value based on its current value. The bigger the number, the bigger the step, and vice versa. */ wheelStep: { progressive: 'progressive', },
第4.8.2版(2023-04-04)
第4.8.1版(2023-03-24)
版本4.7.0(2023-03-21)
第4.6.3版(2023-03-18)
版本4.6.2(2023-03-07)
版本4.6.1(2023-03-07)
版本4.6.0(2022-02-14)
版本4.5.13(2020-02-16)
第4.5.9版(2019-10-12)
第4.5.8版(2019-10-08)
第4.5.7版(2019-09-13)
第4.5.4版(2019-01-14)
第4.5.2版(2019-01-6)
第4.5.1版(2018年10月28日)
第4.5.0版(2018年10月14日)
版本4.4.3(2018-09-24)
第4.4.2版(2018-09-15)
版本4.4.1(2018-09-13)
v4.4.0版(2018年8月04日)
版本4.3.7(2018-07-28)
版本4.3.6(2018-07-27)
第4.3.4版(2018年7月26日)
第4.3.3版(2018年7月24日)
第4.3.1版(2018-07-24)
版本4.3.0(2018-06-02)