setStyleClass 方法覆盖了已经定义的 styleClass

setStyleClass method is overriding the already defined styleClass

我有一个这样的 jsf 代码:

<h:inputText id="emailText" styleClass="emailAddress" value="{bean.emailText}"/>

我正在添加样式 emailAddress 以在 jquery 中使用它来限制用户在文本框中复制和粘贴文本,如下所示:

jQuery(".emailAddress").bind("copy paste",function(e) {
      e.preventDefault();
});

但是在点击提交时,当文本字段被验证并且输入的文本格式不正确时,bean side,我正在向文本框添加另一种样式 class 以将其突出显示为红色,例如:

((HtmlInputText) getUIComponent(context, component, "emailText")).setStyleClass("error");

现在的问题是新添加的样式 class 覆盖了现有的电子邮件地址 class,后者用于限制在 jquery 中的复制和粘贴。我在 jquery 中仅使用 class 方法,因为我想在整个应用程序中将限制功能应用于所有电子邮件地址字段。所以,请帮助我如何处理这种情况。我的意思是当我们调用 setStyClass() 时如何避免覆盖现有样式 class。谢谢

您可以尝试另一种方法:

首先在 bean 中创建方法,returns 用于文本字段验证的布尔值。

在 styleClass 属性中使用该方法添加 class "error" 当它 returns false.

styleClass="emailAddress #{beanName.isvalidate eq true ? 'no-error' : 'error'}"

在提交按钮上不要忘记更新 h:inputText [使用 update="emailText" 作为提交按钮]