Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
e277cb0
make validator works in multi-forms with one function call
SaitoWu Nov 25, 2013
fa8d7a8
fix typo identifie
SaitoWu Nov 25, 2013
38e9b1a
remove validate form, cause validate funciton has been removed from $.fn
SaitoWu Nov 25, 2013
661c256
remove meaningless moe comment from codebase
SaitoWu Nov 25, 2013
3401979
prevent other submit events when validated failed
SaitoWu Nov 25, 2013
07f6862
prevent default when form has two or more submit events bound
SaitoWu Nov 25, 2013
5f5ee4b
add test for submit and prevent default action
SaitoWu Nov 27, 2013
c874f69
make validator ignore error empty when the element didn't has require…
SaitoWu May 20, 2014
5a32d77
TIL: false means pass
SaitoWu May 21, 2014
a1f6e22
FIX the email bug when the email is a@aaaa or others
SaitoWu Dec 1, 2014
c7995a5
add validate success status
ruoqianfengshao Mar 16, 2016
7f4e356
support custom pattern
ruoqianfengshao Apr 23, 2016
a5ee9ba
add minlength validate
ruoqianfengshao Apr 23, 2016
631c914
only validate elements in form, removed element will be ignore
ruoqianfengshao Apr 24, 2016
03d8f9f
fix readme for custome pattern
ruoqianfengshao Apr 28, 2016
e34cacf
fix data-pattern doc
ruoqianfengshao Apr 29, 2016
9b0871c
fix selector bug and optimize email pattern
ruoqianfengshao Sep 7, 2016
8dc4bf6
validator empty if required
ruoqianfengshao Sep 7, 2016
a805c71
avoid side space validator when use pattern
ruoqianfengshao Nov 2, 2016
d9090fd
fix readme
ruoqianfengshao Jun 21, 2017
6a9ca84
validate item with delegate and add new param in validator
ruoqianfengshao Sep 27, 2017
b1bffdf
add validatorSetup for common global config
ruoqianfengshao Nov 29, 2017
edea629
add allowreturn to forbidden form submit by return
ruoqianfengshao Dec 29, 2017
731dd42
fix allowreturn
ruoqianfengshao Jan 9, 2018
0aa3c35
fix method false
ruoqianfengshao Feb 27, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
37 changes: 36 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ $('#form_id').validator(options);
```js
options = {
// 需要校验的表单项,(默认是 `[required]`),支持任何 jQuery 选择器可以选择的标识
identifie: {String},
identifier: {String},

// 校验不通过时错误时添加的 class 名(默认是 `error`),当校验为空时,还同时拥有 `empty` 这个 classname
klass: {String},
Expand All @@ -41,8 +41,27 @@ options = {

before: {Function}, // 表单检验之前
after: {Function}, // 表单校验之后,只有 __return true__ 才会提交表单
allowReturn: {Boolean | true} // 是否禁用表单回车提交,false 禁用
}
```
全局配置,类似$.ajaxSetup,可以把一些共用配置抽出来,不用每次单独写,比如 errorCallback。setup 放在 validator 实例化之前。

```js
$.validatorSetup({
// 错误出现时 `klass` 放在当前表单项还是父节点(默认是当前表单项)
isErrorOnParent: {Boolean},

// 触发表单项校验的方法,当是 false 在点 submit 按钮之前不校验(默认是 `blur`)
method: {String | false},

// 出错时的 callback,第一个参数是所有出错表单项集合
errorCallback(unvalidFields): {Function},

before: {Function}, // 表单检验之前
after: {Function}, // 表单校验之后,只有 __return true__ 才会提交表单
allowReturn: {Boolean | true} // 是否禁用表单回车提交,false 禁用
})
```

### 二、验证表单
```js
Expand Down Expand Up @@ -162,6 +181,22 @@ $('#event').on('after:hello', function(event, element){
</div>
```

#### 7. 自定义pattern
定义了一个全局 `FormValidator` 对象,里面有 `registerPattern` 和 `unRegisterPattern` 两个方法,支持 **自定义pattern**,html中的`data-pattern`被用以识别自定义`pattern`,属性值为`string`。若需要使用 `data-pattern`,则 `$el.attr('pattern')`应为空。自定义方法中传入了当前表单项的值以及当前表单项,自定义方法应该返回Boolean,例:
```html
<input type="text" data-pattern="userName">
```

``` javascript
FormValidator.registerPattern("userName", function(val, $el){
return val > 0 ? true : false
})

FormValidator.unRegisterPattern("userName")


```

## 通用约定和代码规范:

- 以 2-spaces 作为缩进
Expand Down
44 changes: 32 additions & 12 deletions index.html
Original file line number Diff line number Diff line change
Expand Up @@ -91,34 +91,54 @@ <h3># form validator</h3>
<div>
<div class="editable" contenteditable required pattern="^\d+$">123</div>
</div>
<div class="new-input-area"></div>
<p>
<button id='js-add-input' type="button">add new input </button>
</p>


<input type="submit" value="send"/>
<input id="validate-form" type="button" value="validate without submit" />
<p>
<input type="submit" value="send"/>
</p>
</form>


<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.8.3.min.js"></script>
<script type="text/javascript" src="validator.js"></script>
<script type="text/javascript">
$('#form').validator({
errorCallback: function(unvalidFields){
$(unvalidFields).each(function(i,item){
//console.log(item.$el[0])
})

$.validatorSetup({
errorCallback: function(fields){
// may not support form in modal
if (fields.length) {
var top = fields[0].$el.offset().top - 100
$('html, body').animate({ scrollTop: top })
}
}
, isErrorOnParent: true
})

$('#form').validator({
isErrorOnParent: true
});

var nameIndex = 1;

$('#js-add-input').on("click", function(){
$('.new-input-area').append($('<p>6-20 charsets [input-' + nameIndex + ']: <input type="text" name="new-' + ++nameIndex + '" required pattern="^.{6,20}$"></p>'))
})

$('#form').on('submit', function(event){
event.preventDefault();
alert("submitted!");
})

$('#event').on('before:hello', function(event, element){
//console.log('`before.hello` event trigger on $("#' + element.id + '")');
})

$('#event').on('after:hello', function(event, element){
//console.log('`after.hello` event trigger on $("#' + element.id + '")');
})

$('#validate-form').on('click', function(){
$(this).closest('form').validate()
})
</script>

</body>
Expand Down
Loading