如何使两个掩码输入在单个输入上工作?
How to make two maskedinput work on a single input?
我正在创建一个颜色选择器,但我想让用户选择透明作为颜色的可能性,我正在使用屏蔽输入同时过滤十六进制输入和字母,一切都在一个输入。
你可以在 JSFiddle 上看到:https://jsfiddle.net/Lindow/60u9wygp/7/
每当用户点击 "transparent" 按钮时,输入的值应该是 'None',每当他点击颜色时,输入中应该是十六进制颜色。
代码片段很长,但内容不多,因此非常容易理解。
$(document).ready(function() {
$('.colorbox').click(function(element) {
$(".colorpickertext").val(element.target.value)
$("#colorpicker").css({
'background': element.target.value
});
});
$('.colorbox-transparent').click(function(element) {
$(".colorpickertext").val('None')
$("#colorpicker").css({
'background': '#fafafa'
});
});
$(".colorpickertext").keyup(function(element) {
$("#colorpicker").css({
'background': element.target.value
});
});
var hexadecimal = [{
"mask": "\#hhhhhh"
}, {
"mask": "llll"
}];
$('.colorpickertext').inputmask({
mask: hexadecimal,
greedy: false,
definitions: {
'h': {
validator: "[A-Fa-f0-9]",
cardinality: 1
},
'l': {
validator: "[a-zA-Z ]",
cardinality: 1
},
}
});
});
button {padding:20px;}
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.inputmask/3.1.62/jquery.inputmask.bundle.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<div id="colorpicker">input below should be "None" on transparent button click</div>
<button class="colorbox" value="None" style="background:#ffffff;">transparent</button>
<button class="colorbox" value="#ffbf00" style="background:#ffbf00;"></button>
<input type="text" class="colorpickertext form-control" placeholder="ex: #4dadc9">
关于如何解决这个问题有什么建议吗?
我以前从未使用过屏蔽输入,但我想我是从 docs 算出来的。您已经使用了两个蒙版选项,只需添加第三个选项。我做了第三个接受 "None":
var hexadecimal = [{
"mask": "N"
}, {
"mask": "\#hhhhhh"
}, {
"mask": "llll"
}];
$('.colorpickertext').inputmask({
mask: hexadecimal,
greedy: false,
definitions: {
'h': {
validator: "[A-Fa-f0-9]",
cardinality: 1
},
'l': {
validator: "[a-zA-Z ]",
cardinality: 1
},
'N': {
validator: "None",
cardinality: 4
},
}
});
掩码的顺序很重要 - 您必须先查找 "None",这样才不会过滤到 #e
。
我正在创建一个颜色选择器,但我想让用户选择透明作为颜色的可能性,我正在使用屏蔽输入同时过滤十六进制输入和字母,一切都在一个输入。
你可以在 JSFiddle 上看到:https://jsfiddle.net/Lindow/60u9wygp/7/
每当用户点击 "transparent" 按钮时,输入的值应该是 'None',每当他点击颜色时,输入中应该是十六进制颜色。
代码片段很长,但内容不多,因此非常容易理解。
$(document).ready(function() {
$('.colorbox').click(function(element) {
$(".colorpickertext").val(element.target.value)
$("#colorpicker").css({
'background': element.target.value
});
});
$('.colorbox-transparent').click(function(element) {
$(".colorpickertext").val('None')
$("#colorpicker").css({
'background': '#fafafa'
});
});
$(".colorpickertext").keyup(function(element) {
$("#colorpicker").css({
'background': element.target.value
});
});
var hexadecimal = [{
"mask": "\#hhhhhh"
}, {
"mask": "llll"
}];
$('.colorpickertext').inputmask({
mask: hexadecimal,
greedy: false,
definitions: {
'h': {
validator: "[A-Fa-f0-9]",
cardinality: 1
},
'l': {
validator: "[a-zA-Z ]",
cardinality: 1
},
}
});
});
button {padding:20px;}
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.inputmask/3.1.62/jquery.inputmask.bundle.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"/>
<div id="colorpicker">input below should be "None" on transparent button click</div>
<button class="colorbox" value="None" style="background:#ffffff;">transparent</button>
<button class="colorbox" value="#ffbf00" style="background:#ffbf00;"></button>
<input type="text" class="colorpickertext form-control" placeholder="ex: #4dadc9">
关于如何解决这个问题有什么建议吗?
我以前从未使用过屏蔽输入,但我想我是从 docs 算出来的。您已经使用了两个蒙版选项,只需添加第三个选项。我做了第三个接受 "None":
var hexadecimal = [{
"mask": "N"
}, {
"mask": "\#hhhhhh"
}, {
"mask": "llll"
}];
$('.colorpickertext').inputmask({
mask: hexadecimal,
greedy: false,
definitions: {
'h': {
validator: "[A-Fa-f0-9]",
cardinality: 1
},
'l': {
validator: "[a-zA-Z ]",
cardinality: 1
},
'N': {
validator: "None",
cardinality: 4
},
}
});
掩码的顺序很重要 - 您必须先查找 "None",这样才不会过滤到 #e
。