當您在未使用模板的網格中單擊編輯時,您爲schema.Model定義的驗證規則得到正確應用。但是,如果您使用自定義模板,則不會應用schema.Model驗證規則。kendoUI網格彈出編輯模板驗證不拾取模型驗證規則
我懷疑答案是因爲我正在使用自定義的彈出窗口編輯模板,因此我可以有一個下拉列表,我必須爲每個html輸入字段(如必需的)手動指定規則。我希望這不是真的,並且定義schema.Model的相同規則也適用於編輯器模板。
如果你知道答案,請發帖,謝謝! 丹
@Daniel 這裏是我得到的模型中定義的驗證屬性和以防萬一它們添加到DOM
/**
* Sets label,input html5 attributes and css based on the validation attributes of the
* model for the given dataSource
* @param {Object} myDs dataSource that contains the Model Schema used for validation.
*/
function addValidationAttributes(myDs) {
var myFields
//Pass in DS or pass in model from grid
if (myDs.options) {
myFields = myDS.options.schema.model.fields
} else//model
{
myFields = myDs.fields
}
$.each(myFields, function(fieldName) {
//Add validation attributes
if (this.validation) {
$('#' + fieldName).attr(this.validation);
//Set label to required if field is required
if (this.validation.required) {
$('label[for=' + fieldName + ']').addClass('required');
$('#' + fieldName).attr('title', "required");
//Check if KendoUI widget because it creates an extra span
if ($('#' + fieldName).is('[data-role]')) {
$('.k-widget').after('<span class="k-invalid-msg" data-for="' + fieldName + '"></span>');
} else {
$('#' + fieldName).after('<span class="k-invalid-msg" data-for="' + fieldName + '"></span>');
}
}
} else//optional
{
//Non requried fields set to optional exclude KEY ID STAMP
if (fieldName !== '__KEY' && fieldName !== '__STAMP' && fieldName !== 'ID') {
//Check if KendoUI widget because it creates an extra span
if ($('#' + fieldName).is('[data-role]')) {
$('.k-widget').after('<span class="optional" data-for="' + fieldName + '"></span>');
} else {
$('#' + fieldName).after('<span class="optional" data-for="' + fieldName + '"></span>');
}
}
}
});
}
而且代碼,你想它,我設置了一類增加了一個*在必填字段和類的標籤之前,在每個沒有必填字段後添加文本「可選」。 KEY,ID和STAMP是我的模型中定義的字段,但我不會將它們放在表單上,所以如果需要,您可以排除實體密鑰字段。
在這裏,他們是
.required:before {
content: "*";
color: red
}
.optional:after {
content: " (optional)";
color: #777;
}
是什麼你的模板是什麼樣子? – RQDQ
不完全同意downvote。所以再次提升。我有同樣的問題。 –