javascript - 如何使两个屏蔽输入在单个输入上工作?

标签 javascript jquery html maskedinput

我正在创建一个颜色选择器,但我想让用户选择透明作为颜色,我使用屏蔽输入同时过滤十六进制输入和字母,所有内容都在一个输入中。

您可以在 JSFiddle 上看到: https://jsfiddle.net/Lindow/60u9wygp/7/

每当用户单击“透明”按钮时,输入的值都应该为“无”,并且每当用户单击颜色时,输入中都应该有十六进制颜色。

该片段很长,但没有太多内容,因此很容易理解。

$(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中解决的。 。您已经使用了两个 mask 选项,只需添加第三个即可。我做了第三个接受“无”的:

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

关于javascript - 如何使两个屏蔽输入在单个输入上工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45578529/

相关文章:

javascript - Protractor 和 promise

javascript - JQuery 褪色问题

css - 以 Angular 自定义 css 加载器

javascript - 在 appendChild 上未加载 Jquery 脚本

javascript - 表格内容根据下拉选项而变化

javascript - 使 inputfield 在 button-div 内的任何地方都可以点击

javascript - 更改表单中的选定值后如何使用 GET 值调用 url?

c# - AngularJS 下拉列表在选择项目后丢失内容

javascript - 模仿表单之外的表单元素的结果

Jquery 在鼠标悬停时显示 block