72 lines
1.8 KiB
JavaScript
Executable File
72 lines
1.8 KiB
JavaScript
Executable File
/**
|
|
* Copyright © Magento, Inc. All rights reserved.
|
|
* See COPYING.txt for license details.
|
|
*/
|
|
|
|
define([
|
|
'jquery'
|
|
], function ($) {
|
|
'use strict';
|
|
|
|
$.widget('mage.trimInput', {
|
|
options: {
|
|
cache: {}
|
|
},
|
|
|
|
/**
|
|
* Widget initialization
|
|
* @private
|
|
*/
|
|
_create: function () {
|
|
this.options.cache.input = $(this.element);
|
|
this._bind();
|
|
},
|
|
|
|
/**
|
|
* Event binding, will monitor change, keyup and paste events.
|
|
* @private
|
|
*/
|
|
_bind: function () {
|
|
if (this.options.cache.input.length) {
|
|
this._on(this.options.cache.input, {
|
|
'change': this._trimInput,
|
|
'keyup': this._trimInput,
|
|
'paste': this._trimInput
|
|
});
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Trim value
|
|
* @private
|
|
*/
|
|
_trimInput: function () {
|
|
// Safari caret position workaround: storing carter position
|
|
var caretStart, caretEnd, input;
|
|
|
|
caretStart = this.options.cache.input.get(0).selectionStart;
|
|
caretEnd = this.options.cache.input.get(0).selectionEnd;
|
|
|
|
input = this._getInputValue().trim();
|
|
|
|
this.options.cache.input.val(input);
|
|
|
|
// Safari caret position workaround: setting caret position to previously stored values
|
|
if (caretStart !== null && caretEnd !== null) {
|
|
this.options.cache.input.get(0).setSelectionRange(caretStart, caretEnd);
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Get input value
|
|
* @returns {*}
|
|
* @private
|
|
*/
|
|
_getInputValue: function () {
|
|
return this.options.cache.input.val();
|
|
}
|
|
});
|
|
|
|
return $.mage.trimInput;
|
|
});
|