【问题标题】:JsViews top-level data-linked validation group syntax?JsViews 顶级数据链接验证组语法?
【发布时间】:2015-12-02 01:23:31
【问题描述】:

我在这个 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>

【问题讨论】:

    标签: jquery validation jsviews


    【解决方案1】:

    您链接到的validation wizard 示例使用为模板中的嵌套标签编写的“验证”验证组标签和“验证”标签:

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

    所以你有两个选择。 1) 编写一个新的验证组标记,设计用于顶级数据链接,或 2) 在您的页面中包含一些“垫片代码”,以编程方式将验证标记实例连接到验证组标记。

    #2 实际上是非常可行的 - 它在一个 jsfiddle 中:http://jsfiddle.net/BorisMoore/xf0Lnufw/

    额外的shim代码如下:

    // 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}
    );
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多