中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

MVVM架(jia)構~knockoutjs系列之驗證信息(xi)自定義輸出~續(xu)

返回目錄

上一講中,我以一(yi)個實際中的(de)(de)(de)例子說明了(le)knockoutjs的(de)(de)(de)自定(ding)義(yi)驗證功能,在(zai)使用過程中,出(chu)現(xian)了(le)一(yi)個問題,當然了(le)不是問題,只是一(yi)種需求,上一(yi)講中自定(ding)義(yi)驗證的(de)(de)(de)表現(xian)是:當頁(ye)面加載(zai)后(hou),自動顯示(shi)有問題的(de)(de)(de)表單元素,這在(zai)有些(xie)場合(he)是不適(shi)合(he)的(de)(de)(de),有時(shi),我們希望它在(zai)被失去焦點時(shi)才將錯誤消息顯示(shi)出(chu)來(lai),而不去輸入信息時(shi),它保持一(yi)種原始狀態,如下面的(de)(de)(de)圖:

我們可以看到(dao),它(ta)在頁面被加載(zai)后,顯示一些友好的提示消息,而(er)當用(yong)戶沒有按著這種規約(yue)輸入時,它(ta)才(cai)會提示您錯誤的消息,如圖:

最后輸入正確,我們(men)看到的就(jiu)是:

 

 

當輸入合法后,結果如圖(tu):

下面說一下實現代碼

HTML核心代碼

<div class="editor-label">
        賬號:
    </div>
    <div class="editor-field">
        <input data-bind='value: name,validationElement:name' />
        <span class="validationWarn" data-bind="visible:initName">請輸入用戶名賬號,它由字母漢字數字組成</span>
        <span class="validationError" data-bind="validationMessage:name"></span>
        <span class="validationSuccess" data-bind="visible:name.isValid()"></span>
    </div>

其中validationMessage是指定將驗證的錯誤消息進行綁定輸出,它比我們上一講用的error()更好友,它在頁面初始化時,不會被執行.isValid()方法是指當前元素是否驗證通過,true表示驗證通過,反之為出現錯誤,錯誤消息會被裝載到validationMessage

屬性上,initName是我為warn提示建立一個附加對象,是指當頁面被初始化時,顯示warn信息,而當元素被修改后,顯示驗證信息或者成功的信息,validationElement表示當前被(bei)驗證(zheng)的(de)(de)元(yuan)素(su),你在(zai)后(hou)臺為錯(cuo)誤消息設置的(de)(de)css類,可以直接反映到時它上面

JS核心代碼

ko.validation.configure({//ko.validation相關配置
                insertMessages: false,//不自動插入錯誤(wu)消(xiao)息
                errorClass: 'error',//指(zhi)定反映到(dao)validationElement對象(xiang)上
            });

            self.name = ko.observable().extend({
                minLength: 2,
                maxLength: { params: 30, message: "名(ming)稱(cheng)最大長度(du)為30個字符" },
                required: {
                    params: true,
                    message: "請輸入名(ming)稱(cheng)",
                },

            });

            self.initName = ko.observable(!self.name.isValid());
            self.name.subscribe(function (newValue) {
                self.initName(false);
            });

到目前(qian)為(wei)止,我們的(de)ko.validation講的(de)就差不多了(le),在以后的(de)工作中可能還會(hui)遇到新的(de)問(wen)題,我同樣會(hui)把(ba)它(ta)記(ji)下(xia)來(lai),寫出來(lai)的(de),呵(he)(he)呵(he)(he).

返回目錄

posted @ 2014-04-14 17:29  張占嶺  閱讀(1727)  評論(0)    收藏  舉報