【问题标题】:How to not show server side validation message if client side validation text is the same and showing?如果客户端验证文本相同并显示,如何不显示服务器端验证消息?
【发布时间】:2014-07-08 16:47:37
【问题描述】:

我在下面的页面中有几个带有客户端类验证失败的 div。中间的文本可以从 div 更改为 div。

<div class="validation-failure">At least one of the above 2 fields needs to be entered</div>

我的网站上也显示了服务器端验证错误,如下所示

<div id="messages_product_error_view">
        <ul>
            <li>At least one of the above 2 fields needs to be entered</li>        </ul>
    </div>

现在我想确保当显示客户端验证并且文本与服务器端验证相同时,只显示客户端验证。但是,如果客户端验证错误为空 div,则显示服务器端验证。我认为可以通过 jquery 来完成。请帮忙?

我想在任何文本出现在 div 上时立即捕获。

这就是正在发生的事情。

当用户在输入字段上键入时,客户端 js 会启动并显示客户端 js 验证错误消息。

但是,在极少数情况下,他们能够绕过 js 或 js 验证不正确。因此,服务器端验证逻辑已经使用 php 实现。

现在,当在输入字段上输入内容时,客户端验证开始......如果用户按下提交,服务器端验证也会显示......

我只想显示客户端..如果客户端不存在然后显示服务器端....您提出的解决方案有效..但是如果用户继续输入错误的页面,则在页面中输入客户端站点验证消息再次继续与服务器端一起出现。因此需要以某种方式检测用户何时在输入中键入任何内容,然后如果出现客户端验证,则不显示服务器端

【问题讨论】:

  • 两个 div 都在 html 中,你说#messages_product_error_view 是服务器端,#validation-failure 是客户端?
  • 如果您的客户端验证已触发,为什么还要发送到服务器。客户端的重点是捕获这些错误而不是导致回发。
  • #messages_product_error_view" 文本是服务器端,因为它是从 phtml 端的 MVC php 动态生成的。#validation-failure 由 javascript 生成。
  • 嗨@Mike,好问题......代码有一点代码债务......所以我想我所能做的就是不要问......我们正在实施服务器端验证,以便代码防御更强..然后我们将解决代码债务
  • 我会说您要么需要修复客户端验证以使其正常工作,要么需要将其删除(注释掉)。如果您无论如何都在进行回发,那么您的客户端验证代码没有任何用途。

标签: javascript jquery html css validation


【解决方案1】:
var clientSide = $(".validation-failure");
var serverSide = $("#messages_product_error_view li");

if (serverSide.text() == clientSide.text()) {
    serverSide.hide();
    clientSide.show();
} else if (clientSide.text().length == 0) {
    serverSide.show();
    clientSide.hide();
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-03
    • 2014-06-21
    • 1970-01-01
    • 2012-09-15
    • 1970-01-01
    • 2012-11-09
    • 2020-02-17
    相关资源
    最近更新 更多