3

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

$(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(); 

但得到“Uncaught TypeError: $(...).unmask is not a function”错误。

文档说“?” 说'后面的任何字符都将成为可选'所以我尝试了 $("#searchCriteria").inputmask({ mask: '?', placeholder: '' });

没有成功。

似乎一旦设置了掩码,就无法更改或清除它,但我确信有办法。

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

这清除了掩码,但不会将其设置为其他任何内容。

编辑:我不拘泥于使用 Jasny,欢迎任何其他建议:)

我要满足的要求是“根据下拉列表中的选择更改输入文本框上的输入掩码”。

4

2 回答 2

3

从这个 SO question 中找到了答案:

<div> 被 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: "" });
        }
    });
});
于 2015-06-17T10:26:48.223 回答
2

尝试

$("#searchCriteria").trigger("unmask"); 
于 2016-09-13T14:14:59.177 回答