Синтаксис группы проверки данных верхнего уровня JsViews?

В этом примере для групп проверки jsViews я вижу, что он существует внутри шаблона и содержит все поля, которые необходимо проверить. http://www.jsviews.com/#samples/tag-controls/datepicker/with-validation-wizard

Можно ли также сформировать группу проверки, используя элементы формы верхнего уровня, связанные с данными, как в этом jsfiddle? http://jsfiddle.net/xnerzqt6/

var app = {
    formData: {
        selectedThing: "",
        selectedPlace: "",
        selectedAction: ""
    }
};


$("#content").link(true, app);
.val-msg {
	margin-right: 5px;
}

.invalid.val-msg {
	border: 2px solid #cf321d;
}

.radiogroup.val-msg {
	padding: 3px;
	display: inline-block;
}

.radiogroup.invalid.val-msg {
	margin: 5px;
}

select.invalid.val-msg {
	margin: 4px;
}

select.val-msg {
	margin: 5px;
}

input[type=radio] {
	margin: 3px 3px 3px 5px;
	padding: 0;
}

label.error {
	color: #cf321d;
	font-style: italic;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="http://www.jsviews.com/download/jsviews.js"></script>
<script src="http://www.jsviews.com/download/sample-tag-controls/generic-edit/edit.js"></script>
<script src="http://www.jsviews.com/download/sample-tag-controls/validate/validate.js"></script>

<div id="content">
    <input data-link='{validate formData.selectedThing trigger=true minLength=8}'/><br/>
    <input data-link='{validate formData.selectedPlace trigger=true minLength=8}'/><br/>
    <span>large block of unrelated stuff</span><br/>
    <input data-link='{validate formData.selectedAction trigger=true minLength=8}'/><br/>
    <input type='button' value='Submit'/><br/>
    <span>should not be able to submit while any validation fails</span>
</div>


person Brian Hinckle    schedule 02.12.2015    source источник


Ответы (1)


Пример мастера проверки, на который вы ссылались, использует " validation" тег группы проверки и тег "validate", которые были написаны для вложенных тегов в шаблоне:

{^{validation}}
    {^{validate .../}}
    {^{validate .../}}
{{/validation}}

Итак, у вас есть два варианта. 1) напишите новый тег группы проверки, предназначенный для работы со связыванием данных верхнего уровня, или 2) включите на свою страницу некоторый «код-оболочку», который программно подключает экземпляры тега проверки к тегу группы проверки.

# 2 на самом деле вполне выполнимо - и вот он в jsfiddle: http://jsfiddle.net/BorisMoore/xf0Lnufw/

Код дополнительной прокладки выглядит следующим образом:

// Get the validationGroup 'validation' tag
var validationGroup = $.view().childTags("validation")[0];

$.view().childTags("validate").forEach(function(validateTag) {
    // For each 'validate' tag, associate with validationGroup.
    validateTag.validationGroup = validationGroup;
    validationGroup.addChild(validateTag);
});

validationGroup.validate(); // Run the validation group validate() method

// Data-link the disabled state of the submit button to be disabled except
// when the validationGroup is valid.
$.link(
    "disabled{:!~validation.isValid}",
    "#submitBtn",
    app,
    {validation: validationGroup}
);
person BorisMoore    schedule 06.12.2015