2013-01-23 116 views
1

當您在未使用模板的網格中單擊編輯時,您爲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; 
} 
+0

是什麼你的模板是什麼樣子? – RQDQ

+0

不完全同意downvote。所以再次提升。我有同樣的問題。 –

回答

2

在您輸入元素使用required

<input type="text" class="k-input k-textbox" name="Name" data-bind="value:Name" required> 
+0

感謝Daniel,這是一個解決方案,但我試圖避免在我的模式中已經定義驗證時,必須將驗證屬性添加到我的html中,這只是多餘的。例如,在網格中,您不必手動添加驗證屬性,它們將從模式中拉出。無論如何,我只是做了一個小函數,它讀取每個字段的當前模式驗證規則,並用適當的屬性更新Dom。 – dan

+0

這將是一個很好的選擇,你可以分享?想知道我是否更喜歡那樣(當然,在我的解決方案中,修改文本並丟失正常文本字段驗證中的唯一數字) –

+1

按照此處要求的代碼,我使用該代碼從model.Schema獲取驗證屬性,並將它們添加到謝謝,DOM – dan