1

我是 Parsley 的新手,想为我的最终用户提供一个好的用户体验。Parsley 网站上的示例“不是用户体验意识的完美示例”。这让我希望有一个错误消息显示层次结构的好例子。

用户永远不会看到同一字段的多个错误消息;它应该一次只有一个。那么,我该如何实现呢?

我建议根据约束应用于字段的顺序来构建层次结构。

有什么建议或解决方案吗?

4

2 回答 2

0

我有同样的问题。

  1. 查看:parsleyjs.org/documentation.html#parsleyclasses 并使用“更改错误容器”部分中的代码。
  2. 将此添加到您的 CSS 中:.parsley-container{display:none} input:focus+.parsley-container{display:block}

我为自己做了更多的东西:

.parsley-container {
  display: none;
  position: absolute;
  margin: 10px 0 0 0;
  padding: 2px 5px;
  z-index: 2;
  -webkit-border-radius: 3px;
  -moz-border-radius: 3px;
  -ms-border-radius: 3px;
  -o-border-radius: 3px;
  border-radius: 3px;
  background: #ffffff;
  border: 1px solid #888888;
}
.parsley-container:after, .parsley-container:before {
  bottom: 100%;
  border: solid transparent;
  content: " ";
  height: 0;
  width: 0;
  position: absolute;
  pointer-events: none;
}
.parsley-container:after {
  border-color: rgba(255, 255, 255, 0);
  border-bottom-color: #ffffff;
  border-width: 10px;
  left: 50%;
  margin-left: -10px;
}
.parsley-container:before {
  border-color: rgba(136, 136, 136, 0);
  border-bottom-color: #888888;
  border-width: 11px;
  left: 50%;
  margin-left: -11px;
}
input:focus + .parsley-container,
input:active + .parsley-container {
  display: block;
}

很像 Chrome HTML5 验证。

于 2013-04-20T21:17:00.337 回答
0

addValidator() 函数接受一个优先级值作为第三个参数。大多数内置验证器的默认值为 30,除了“notblank”为 2、“regexp”为 64、“type-xxx”为 256 和“required”为 512。Parsley 停止验证最高优先级的失败测试(s)。这可以通过priorityEnabled设置进行配置。为了一次只获得一个,您可以创建自定义验证器,每个验证器具有不同的优先级:

window.Parsley.addValidator('check3', function(val, req) {
    return (val == whatever3(val, req));
// +--- Higher than check2
// v
}, 103).addMessage('en', 'check3', 'Failed check 3');

window.Parsley.addValidator('check2', function(val, req) {
    return (val == whatever2(val, req));
// +--- Higher than check1
// v
}, 102).addMessage('en', 'check2', 'Failed check 2');

window.Parsley.addValidator('check1', function(val, req) {
    return (val == whatever1(val, req));
// +--- Higher than many, lower than "required (512)" and "type-xxx (256)"
// v
}, 101).addMessage('en', 'check1', 'Failed check 1');
于 2017-02-24T21:18:34.947 回答