【问题标题】:How do I apply a custom alias inputmask using jquery?如何使用 jquery 应用自定义别名输入掩码?
【发布时间】:2016-09-12 09:58:13
【问题描述】:

我正在尝试在 Yii2 表单输入中使用输入掩码。这是我的代码:

var IDR={"alias":"numeric","prefix":"Rp","digits":0,"digitsOptional":false,"decimalProtect":true,"groupSeparator":",","radixPoint":".","radixFocus":true,"autoGroup":true,"autoUnmask":true,"removeMaskOnSubmit":true};
Inputmask.extendAliases({"IDR": {"alias":"numeric","prefix":"Rp","digits":0,"digitsOptional":false,"decimalProtect":true,"groupSeparator":",","radixPoint":".","radixFocus":true,"autoGroup":true,"autoUnmask":true,"removeMaskOnSubmit":true} }); 

以下所有情况都会在 jquery.inputmask.bundle.js 上产生错误 Uncaught SyntaxError:

jQuery('selector').inputmask(IDR)
jQuery('selector').inputmask("IDR")
jQuery('selector').inputmask(eval(IDR))
jQuery('selector').inputmask({'mask':'IDR'})
jQuery('selector').inputmask({'alias':'IDR'})

Chrome 调试器指出以下输入掩码代码行存在问题:

42: dataoptions = JSON.parse("{" + attrOptions + "}")), dataoptions) {

【问题讨论】:

    标签: jquery yii2 jquery-inputmask


    【解决方案1】:

    我查看了 jquery.inputmask 3.x 的文档。据我了解,更改别名属性的首选方法是创建一个继承自默认别名定义的新别名。

    例子

     Inputmask.extendAliases({
          'numeric': {
            "prefix":"Rp",
            "digits":0,
            "digitsOptional":false,
            "decimalProtect":true,
            "groupSeparator":",",
            "radixPoint":".",
            "radixFocus":true,
            "autoGroup":true,
            "autoUnmask":true,
            "removeMaskOnSubmit":true
          }
        }); 
    
    Inputmask.extendAliases({
         'IDR': {
            alias: "numeric", //it inherits all the properties of numeric    
           "prefix":"Rpoverrided"//overrided the prefix property   
          }
    });
    

    现在像这样将输入掩码应用到您的选择器

    jQuery('selector').inputmask("IDR")
    

    下面给出了一个工作小提琴

    Click to see the fiddle

    我已经在我的 chrome 浏览器上测试过,发现可以正常工作。

    为避免出现 Uncaught SyntaxError 错误: 避免使用<input data-inputmask="IDR">,因为data-inputmask 属性将在jQuery('selector').inputmask("IDR") 命令之前进行评估。这将导致 JSONparse 错误:https://github.com/RobinHerbots/Inputmask

    数据输入掩码属性 您还可以使用 data-inputmask 属性应用输入掩码。在属性中,您指定输入掩码所需的选项。这将使用 $.parseJSON 进行解析(目前),因此请务必使用没有 {} 的格式良好的 json 字符串。

    【讨论】:

    • 谢谢。我在 Chrome 控制台中尝试过,但没有成功。问题似乎出在 inputmask("IDR") 命令上。 jquery.inputmask.bundle.js 文件正在尝试评估引发错误的 '{' + "IDR" + '}'。疯狂的是我刚刚从 Composer 做了一个更新,这个错误开始发生了。在那之前还好。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-12
    • 2015-03-16
    • 2011-04-27
    • 2020-05-06
    • 2015-09-08
    • 1970-01-01
    相关资源
    最近更新 更多