// Util function
function addFormatter(input, formatFn) {
let oldValue = input.value;
const handleInput = event => {
const result = formatFn(input.value, oldValue, event);
if (typeof result === 'string') {
input.value = result;
}
oldValue = input.value;
}
handleInput();
input.addEventListener("input", handleInput);
}
// Example implementation
// HOF returning regex prefix formatter
function regexPrefix(regex, prefix) {
return (newValue, oldValue) => regex.test(newValue) ? newValue : (newValue ? oldValue : prefix);
}
// Apply formatter
const input = document.getElementById('user_login');
addFormatter(input, regexPrefix(/mysite-/, 'mysite-'));
我想用这个小提琴来处理变量而不是文本,这是一行:
addFormatter(input, regexPrefix(/mysite-/, 'mysite-'));
如您所见,它仅允许您在mysite-
之后输入文本,这就是我希望它起作用的方式。但是我希望能够在变量mysite-
处使用它。像这样:
addFormatter(input, regexPrefix(/$sitetitle/, $sitetitle));
您对如何执行此操作有任何想法吗?
答案 0 :(得分:0)
您可以使用RegExp()
构造函数动态创建正则表达式。
addFormatter(input, regexPrefix(new RegExp('^' + $sitetitle), $sitetitle));