【问题标题】:Primefaces InputMask optional digitsPrimefaces InputMask 可选数字
【发布时间】:2016-08-24 13:27:19
【问题描述】:

我正在使用Primefaces 进行一个小项目。

我正在尝试使用特殊格式显示我的数据库中的值 我在我的数据库中存储了一个字符串,看起来像这样40;99;1;0;0;12 这是六个不同的数字,用 ; 分隔,范围在 0-99 之间。

我想在 InputMask 中显示这个值,以确保用户不会忘记 ;。 现在我的格式有问题。

我在用这个

<p:inputMask id="myID" placeholder="Value" value="#{myClass.value}" mask="9?9;99;99;99;99;99"/>

我想说的是,掩码包含六个用于数字输入的“字段”,每个字段可以包含 1-99 之间的数字。

问题是,如果用户将输入写入 30;10;0_;0_;0_;4_Primefaces 将其转换为 30;10;00;04;__;_

有没有什么好办法让掩码知道它可以是一个或两位数的数字? 或者有没有办法说,如果输入只有一个数字,先放一个 0

【问题讨论】:

  • 在使用相同语法的 jquery 插件中,您可以定义 [9] 但在未正确呈现的 primefaces 中。它不明白。

标签: jsf jsf-2 primefaces


【解决方案1】:

我不知道这个解决方案是否符合您的需求,但您可以定义自定义掩码

$.mask.definitions['h'] = "[0-9]{0,1}";
$("#form\\:your_input_mask_id").mask("hh;hh;hh;hh;hh;hh");

在您的 document.ready 函数中。这将使_ 字符保持原样,但我想您可以在拆分字符串并处理每个部分时在代码中处理它。我放了 form\: 因为您通常将这些输入放在带有 id 表单的表单中。相应地改变!

这有一个缺点,如果你不输入一些东西,它也会验证,不管不在 1 到 99 之间。

【讨论】:

  • 感谢您的回答。我试过这个,但没有奏效。我认为它找不到元素。 $("#myForm:myElementID").mask("hh;hh;hh;hh;hh;hh");
  • 检查您的 html 代码,确保您的元素具有正确的 id,并检查此 javascript 是否实际运行,没有任何异常。另请注意,您需要在 : 之前使用 \\ 才能使 id 被“转义”并被理解。
  • 再来一张。我忘了说它在 Panel & panegrid 中。我是否还需要给主题一个 ID 以及如何称呼它们?
  • 你必须看到你的组件生成的id。如果它生成一个随机 id,那么你也必须给它的父组件一个 id。
  • 现在它像 50% 一样工作,它正确设置了掩码,但仍然可以输入字母或其他数字而不是数字。我该如何解决这个问题
猜你喜欢
  • 1970-01-01
  • 2015-02-10
  • 1970-01-01
  • 1970-01-01
  • 2015-05-26
  • 1970-01-01
  • 1970-01-01
  • 2015-05-11
  • 1970-01-01
相关资源
最近更新 更多