从输入文本框中清除(或更改)输入掩码(使用Jasny)

时间:2015-06-16 14:04:04

标签: javascript jquery jasny-bootstrap

我希望根据选择列表中选择的值更改文本框上的输入掩码。代码是:

$(document).ready(function () {
    $("#searchList").change(function () {
        $("#searchCriteria").val("");

        var value = $(this).find("option:selected").val();

        switch (value) {
            case "2":
                $("#searchCriteria").inputmask({ mask: '999999', placeholder: '' });
               break;
            default:
                alert('default'); // this alert pops up.
                $("#searchCriteria") ///I want to clear the mask here.
        }
    });
});

我试过了

$("#searchCriteria").unmask(); 

但得到"未捕获的TypeError:$(...)。unmask不是函数"错误。

文档说'?'说'以下任何字符都将成为可选字符'所以我试过了     $("#searchCriteria")。inputmask({mask:'?',占位符:''});

没有成功。

看来,一旦设置了面具,就无法更改或清除,但我确定有办法。

我也试过$("#searchCriteria")。unbind();

清除了面具,但不会将其设置为其他任何内容。

编辑: 我并不喜欢使用Jasny,欢迎任何其他建议:)

我想要实现的要求是根据下拉列表中的选择更改输入文本框上的输入掩码'。

2 个答案:

答案 0 :(得分:3)

从这个问题中找到答案:

How can I "reset" <div> to its original state after it has been modified by JavaScript?

基本上,将克隆状态存储在变量中,并在重新分配掩码之前使用此变量将元素恢复为原始状态。

代码现在看起来像这样,switch语句已经消失,但这是出于一个非相关的原因:

$(document).ready(function () {

    var searchCriteriaClone = $("#searchCriteria").clone();

    $("#searchList").change(function () {
        $("#searchCriteria").val("");
        $("#searchCriteria").replaceWith(searchCriteriaClone.clone());

        var value = $(this).find("option:selected").val();

        if (value === "2") {
            $("#searchCriteria").inputmask({ mask: "999999", placeholder: "" });
        }
    });
});

答案 1 :(得分:2)

尝试

$("#searchCriteria").trigger("unmask");