更新:此功能目前已在1.2.0版本中實現。同樣optional
標誌可用於:http://semantic-ui.com/behaviors/form.html#optional-validation-fields
上一頁anwser和解決方案的語義版本< 1.2.0:
我設法通過擴展語義UI表單驗證行爲,以制定出可選字段是一個有效方法。
首先,我爲每個規則集添加了一個optional
標誌。這可以被設置或者true
或false
:
firstname: {
identifier: "first_name",
optional: true,
rules: [
{
type: "regex[^[a-zA-Z -]+$]",
prompt: "First name can only consist of letters, spaces and dashes"
}
]
}
我接着又搜尋,處理每個字段的驗證功能,並有我的if語句添加到檢查optional
標誌設置爲true
延伸,並該值爲空。如果條件爲真,則跳過空字段的驗證並返回有效。
功能可以圍繞4600ish線未壓縮semantic.js
找到或搜索功能評論:
// takes a validation object and returns whether field passes validation
field: function(field) {
var
$field = module.get.field(field.identifier),
fieldValid = true,
fieldErrors = []
;
if(field.optional && $.trim($field.val()) == ""){
module.debug("Field is optional and empty. Skipping", field.identifier);
return true;
}
if(field.rules !== undefined) {
$.each(field.rules, function(index, rule) {
if(module.has.field(field.identifier) && !(module.validate.rule(field, rule))) {
module.debug('Field is invalid', field.identifier, rule.type);
fieldErrors.push(rule.prompt);
fieldValid = false;
}
});
}
if(fieldValid) {
module.remove.prompt(field, fieldErrors);
$.proxy(settings.onValid, $field)();
}
else {
formErrors = formErrors.concat(fieldErrors);
module.add.prompt(field.identifier, fieldErrors);
$.proxy(settings.onInvalid, $field)(fieldErrors);
return false;
}
return true;
}
這是添加在語義1.2.0,並反映在文檔:http://semantic-ui.com/behaviors/form.html#optional-validation-fields – 2014-12-09 06:11:12
@EduardoRomero是的,我也提出了他們的問題跟蹤器的建議當我想出如何將其實現到現有的表單驗證行爲中時。 – 2014-12-09 06:46:30