99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁(yè)精彩閱讀對(duì)數(shù)據(jù)倉(cāng)庫(kù)進(jìn)行數(shù)據(jù)建模
對(duì)數(shù)據(jù)倉(cāng)庫(kù)進(jìn)行數(shù)據(jù)建模
2016-08-22
收藏

對(duì)數(shù)據(jù)倉(cāng)庫(kù)進(jìn)行數(shù)據(jù)建模

在日常生活中,我們要使用大量的應(yīng)用程序來(lái)生成新的數(shù)據(jù)、變更數(shù)據(jù)、刪除數(shù)據(jù),當(dāng)然在大多數(shù)的情況下我們還要查閱和分析數(shù)據(jù)。就來(lái)想象一個(gè)收發(fā) email 的簡(jiǎn)單應(yīng)用程序吧。我們已經(jīng)存儲(chǔ)了地址信息,可能還存儲(chǔ)了一些文檔。我們可以決定是否存儲(chǔ)已經(jīng)發(fā)送過(guò)的郵件,但是也可能隔一段時(shí)間后將其刪除,或者刪除已經(jīng)發(fā)送過(guò)的所有郵件。那么我們?cè)撊绾翁幚硪欢螘r(shí)間以前刪除或者修改過(guò)的地址呢?我們?cè)僖膊粫?huì)看到它們了。

Email 程序大部分都屬于不是很復(fù)雜的數(shù)據(jù)庫(kù),但是完全可以將其看作一個(gè)在單用戶環(huán)境下的 OLTP(在線事務(wù)處理系統(tǒng))簡(jiǎn)單示例。它使用了所有的所謂訪問(wèn)數(shù)據(jù)的操作 CRUD(創(chuàng)建、讀取、更新、刪除)。當(dāng)數(shù)據(jù)存儲(chǔ)達(dá)到一定量的時(shí)候,規(guī)模就會(huì)幾乎保持不變,因?yàn)榭梢詮拇鎯?chǔ)中刪除過(guò)期數(shù)據(jù)。

數(shù)據(jù)倉(cāng)庫(kù)就完全是一種不同種類的應(yīng)用程序。它并不是用來(lái)運(yùn)行當(dāng)前的操作,例如發(fā)送郵件。它是用來(lái)分析數(shù)據(jù)并且從現(xiàn)有數(shù)據(jù)中發(fā)現(xiàn)新的價(jià)值,主要是用來(lái)預(yù)測(cè)未來(lái)的情況。數(shù)據(jù)倉(cāng)庫(kù)并不是解決所有問(wèn)題的通用結(jié)構(gòu)。它必須集中于某一問(wèn)題領(lǐng)域,例如航空服務(wù)、顧客收益等。

數(shù)據(jù)倉(cāng)庫(kù)也有有趣的一面,那就是數(shù)據(jù)庫(kù)本身是穩(wěn)定增長(zhǎng)的。數(shù)據(jù)沒(méi)有被刪除,也不發(fā)生變更。我們不需要將冗余數(shù)據(jù)置于數(shù)據(jù)庫(kù)之外(因?yàn)榧尤雮}(cāng)庫(kù)中的數(shù)據(jù)經(jīng)過(guò)了數(shù)據(jù)凈化的過(guò)程,該過(guò)程檢查了數(shù)據(jù)的正確性)來(lái)減少?gòu)?fù)雜性同時(shí)增強(qiáng)讀取操作的性能。

為了能夠?qū)?a href='/map/shujucangku/' style='color:#000;font-size:inherit;'>數(shù)據(jù)倉(cāng)庫(kù)中的數(shù)據(jù)進(jìn)行分析,數(shù)據(jù)存儲(chǔ)于一個(gè)多維結(jié)構(gòu)中,叫做星型模式。如果將星型模式擴(kuò)展,就會(huì)得到雪花模式。本白皮書將會(huì)闡述如何使用IBM Rational Rose進(jìn)行星型模式建模和雪花模式建模。

飛行服務(wù)數(shù)據(jù)集市的例子

為了更好地解釋如何對(duì)數(shù)據(jù)倉(cāng)庫(kù)建模,本白皮書將使用一個(gè)簡(jiǎn)單數(shù)據(jù)集市的的例子(即一個(gè)數(shù)據(jù)倉(cāng)庫(kù)或者數(shù)據(jù)倉(cāng)庫(kù)的一部分),來(lái)分析旅客乘坐航班 Happy Flying and Landing(愉快飛行平安降落)的行為和滿意程度。

我們將存儲(chǔ)乘客信息和每個(gè)航班的的相關(guān)數(shù)據(jù)、選擇的菜單以及乘客對(duì)飛行的滿意程度。

回頁(yè)首

數(shù)據(jù)倉(cāng)庫(kù)術(shù)語(yǔ)表

數(shù)據(jù)倉(cāng)庫(kù)引入了新的術(shù)語(yǔ),擴(kuò)展了數(shù)據(jù)建模的術(shù)語(yǔ)表。為使本文的闡述能夠完備,下面我介紹一下最常用的術(shù)語(yǔ)。

數(shù)據(jù)倉(cāng)庫(kù)

數(shù)據(jù)倉(cāng)庫(kù)是一個(gè)支持管理決策的數(shù)據(jù)集合。數(shù)據(jù)是面向主題的、集成的、不易丟失的并且是時(shí)間變量。

數(shù)據(jù)倉(cāng)庫(kù)是所有操作環(huán)境和外部數(shù)據(jù)源的快照集合。它并不需要非常精確,因?yàn)樗仨氃谔囟ǖ臅r(shí)間基礎(chǔ)上從操作環(huán)境中提取出來(lái)。

數(shù)據(jù)集市

數(shù)據(jù)倉(cāng)庫(kù)只限于單個(gè)主題的區(qū)域,例如顧客、部門、地點(diǎn)等。數(shù)據(jù)集市在從數(shù)據(jù)倉(cāng)庫(kù)獲取數(shù)據(jù)時(shí)可以依賴于數(shù)據(jù)倉(cāng)庫(kù),或者當(dāng)它們從操作系統(tǒng)中獲取數(shù)據(jù)時(shí)就不依賴于數(shù)據(jù)倉(cāng)庫(kù)。

事實(shí)

事實(shí)是數(shù)據(jù)倉(cāng)庫(kù)中的信息單元,也是多維空間中的一個(gè)單元,受分析單元的限制。

事實(shí)存儲(chǔ)于一張表中(當(dāng)使用關(guān)系數(shù)據(jù)庫(kù)時(shí))或者是多維數(shù)據(jù)庫(kù)中的一個(gè)單元。

每個(gè)事實(shí)包括關(guān)于事實(shí)(收入、價(jià)值、滿意記錄等)的基本信息,并且與維度相關(guān)。

在某些情況下,當(dāng)所有的必要信息都存儲(chǔ)于維度中時(shí),單純的事實(shí)出現(xiàn)就是對(duì)于數(shù)據(jù)倉(cāng)庫(kù)足夠的信息。我們稍后討論有關(guān)缺無(wú)事實(shí)的情況。

維度

維度是綁定由坐標(biāo)系定義的空間的坐標(biāo)系的軸線。數(shù)據(jù)倉(cāng)庫(kù)中的坐標(biāo)系定義了數(shù)據(jù)單元,其中包含事實(shí)。

坐標(biāo)系的一個(gè)例子就是帶有 x 維度和 y 維度的 Cartesian(笛卡爾)坐標(biāo)系。

數(shù)據(jù)倉(cāng)庫(kù)中,時(shí)間總是維度之一。

數(shù)據(jù)挖掘

數(shù)據(jù)倉(cāng)庫(kù)的數(shù)據(jù)中發(fā)現(xiàn)新信息的過(guò)程被稱為數(shù)據(jù)挖掘,這些新信息不會(huì)從操作系統(tǒng)中獲得。

分析空間

分析空間是數(shù)據(jù)倉(cāng)庫(kù)中一定量的數(shù)據(jù),用于進(jìn)行數(shù)據(jù)挖掘以發(fā)現(xiàn)新信息同時(shí)支持管理決策。

切片

一種用來(lái)在數(shù)據(jù)倉(cāng)庫(kù)中將一個(gè)維度中的分析空間限制為數(shù)據(jù)子集的技術(shù)。

切塊

一種用來(lái)在數(shù)據(jù)倉(cāng)庫(kù)中將多個(gè)維度中的分析空間限制為數(shù)據(jù)子集的技術(shù)。

星型模式

一種使用關(guān)系數(shù)據(jù)庫(kù)實(shí)現(xiàn)多維分析空間的模式,稱為星型模式。

星型模式將在本白皮書中稍后進(jìn)行進(jìn)一步討論。

雪花模式

不管什么原因,當(dāng)星型模式的維度需要進(jìn)行規(guī)范化時(shí),星型模式就演進(jìn)為雪花模式。

回頁(yè)首

使用 IBM Rational Rose 進(jìn)行星型模式建模

星型模式的基本形式必須實(shí)現(xiàn)多維空間(常常被稱為方塊),以使用關(guān)系數(shù)據(jù)庫(kù)的基本功能。

首先,我們需要理解多維空間。

多維分析空間

幾何學(xué)中的方塊是指一個(gè)三維空間,其中每個(gè)維度的尺寸都相同。想象一個(gè)立方體,每個(gè)維度都有三個(gè)單元,我們即得到相同結(jié)構(gòu)的33=27個(gè)單元。

圖1 一個(gè)具有 x、y、z 維度的方塊

圖1 一個(gè)具有 x、y、z 維度的方塊

多維分析空間(或者數(shù)據(jù)倉(cāng)庫(kù)方塊)與幾何空間中的方塊僅僅存在細(xì)節(jié)上的差異。

維度不僅限于 3 維。不過(guò),處理很多維度的立方體也不是件輕松的事情,這會(huì)導(dǎo)致大多數(shù)的實(shí)現(xiàn)被限制于 6 或者 7 維。不要期盼使用圖形可以很好地表示超過(guò) 4 的維度--如果您有幸能發(fā)現(xiàn)一種方法,別忘了告訴我一下。

維度并不具有相同的規(guī)模和單元。規(guī)模從幾個(gè)單元到幾百萬(wàn)個(gè)單元,差別巨大。單元可以是一天、一位顧客、部門等。

單元,相當(dāng)于子方塊(1×1×1等),包含事實(shí)。

圖2 一個(gè)三維數(shù)據(jù)立方體

圖2 一個(gè)三維數(shù)據(jù)立方體

數(shù)據(jù)立方體需要很大的內(nèi)存以存儲(chǔ)所有事實(shí)。無(wú)論是否包含事實(shí),都必須要預(yù)留單元。

這就是為什么使用關(guān)系數(shù)據(jù)庫(kù)和星型模式的原因。使用它們能夠優(yōu)化存儲(chǔ)并且保持?jǐn)?shù)據(jù)結(jié)構(gòu)的靈活性。

星型模式

星型模式的基本思想就是保持立方體的多維功能,同時(shí)也增加了小規(guī)模數(shù)據(jù)存儲(chǔ)的靈活性。

圖3 一個(gè)星型模式

圖3 一個(gè)星型模式

在圖3中,星型模式使用事實(shí) Flight 表示了一個(gè) 4 維方塊(Passenger、Menu、Flight Schedulet 和 Time)。基本上,事實(shí)必須指定一個(gè)維度,以將其放入立方體的單元中。

我們的例子中的維度是:

Passenger,描述了飛行航程中的每位乘客,由經(jīng)常飛行號(hào)(frequent flyer number)指定。不是經(jīng)常乘坐飛機(jī)的乘客不是數(shù)據(jù)倉(cāng)庫(kù)的一部分。

Flight Schedule,是指所有常規(guī)飛行的日程。

Menu,是用于飛行的菜單。只有對(duì)菜單進(jìn)行基本的分類才會(huì)對(duì)數(shù)據(jù)挖掘有重要意義。

Time,是指飛行的時(shí)間。

事實(shí) Flight 描述了乘客在唯一的 Time 的單程飛行上選擇 Menu。

分析空間可以是完整的方塊,或者我們可以根據(jù)維度將分析空間分割成小片。

每個(gè)維度根據(jù)一個(gè)對(duì)象進(jìn)行描述,對(duì)象可以用類表示,這些類就是有關(guān)業(yè)務(wù)主題的名稱。這一點(diǎn)對(duì)于成功建立數(shù)據(jù)倉(cāng)庫(kù)來(lái)說(shuō)是很重要的,因?yàn)閭}(cāng)庫(kù)的用戶(經(jīng)理、分析員、市場(chǎng))對(duì)于信息技術(shù)的術(shù)語(yǔ)并不是很熟悉。

事實(shí)本身就是商業(yè)智能的另一個(gè)對(duì)象,仍然通過(guò)類進(jìn)行表示。

事實(shí)指每個(gè)維度。事實(shí)與維度的關(guān)聯(lián)常常是一對(duì)任意,這也就意味著每個(gè)事實(shí)都與單個(gè)維度的一個(gè)單元準(zhǔn)確對(duì)應(yīng),而維度的每個(gè)單元(每個(gè)Passenger、Time等)可以與任意數(shù)量的事實(shí)發(fā)生關(guān)聯(lián)(包括0個(gè)事實(shí))。

使用 Rational Rose 將對(duì)象模型轉(zhuǎn)換為數(shù)據(jù)模型即完成了星型模式的實(shí)現(xiàn)。這里我們可以看到轉(zhuǎn)換后的結(jié)果。

圖4 使用Rational Rose實(shí)現(xiàn)星型模式

圖4 使用Rational Rose實(shí)現(xiàn)星型模式

在圖4中,沒(méi)有顯示自動(dòng)創(chuàng)建的主鍵和外鍵約束。

星型模式的維度是獨(dú)立的表。當(dāng)對(duì)象模型轉(zhuǎn)換為數(shù)據(jù)模型時(shí),Rational Rose 可以生成維度的主鍵。

事實(shí)表指從維度表中使用鍵遷移的維度,當(dāng)生成數(shù)據(jù)模型時(shí) Rational Rose 可以生成外鍵。

在星型模式中切片和切塊是對(duì)維度的限制(選擇)。這是一個(gè)運(yùn)行時(shí)問(wèn)題,而不是建模問(wèn)題,但是模型必須分辨其需要。

雪花模式

基本的星型模式并不能滿足數(shù)據(jù)挖掘的所有需要。我們需要更復(fù)雜的維度,例如時(shí)間。分析員希望根據(jù)周、月、季度等識(shí)別模式。

維度必須進(jìn)行規(guī)范化。我們不需要冗余的維度表,這只會(huì)使數(shù)據(jù)切片變得更加復(fù)雜。這種過(guò)程中我們得到的模式被稱為雪花模式。

我們來(lái)看一個(gè)簡(jiǎn)單的雪花模式例子。我們將時(shí)間維度規(guī)范化為周、月和季度。

圖5 規(guī)范化的 Time 維度

圖5 規(guī)范化的 Time 維度

我們希望能夠使用附加的規(guī)范化維度將立方體切片:周、月和季度。在本例中,我們假定季度是月的平行層次,這也就意味著我們不能將季度假定為若干月的聚合。由于這個(gè)原因,我們將使用一張范化表(是對(duì) OLAP 查詢的一項(xiàng)簡(jiǎn)單附加)預(yù)先選擇時(shí)間維度。

最終雪花模式添加了規(guī)范化維度。

圖6 帶有范化維度的 Time 和事實(shí) Flight 的雪花模式

圖6 帶有范化維度的 Time 和事實(shí) Flight 的雪花模式

當(dāng)然,所有的維度都可以像時(shí)間例子那樣進(jìn)行規(guī)范化,這就導(dǎo)致了比較復(fù)雜的數(shù)據(jù)集市模式的出現(xiàn)。

由 Rational Rose 從雪花模式中開發(fā)的實(shí)現(xiàn)模式(數(shù)據(jù)模型)是完善的。

圖7 帶有范化 Time 維度的雪花模式的數(shù)據(jù)模型

創(chuàng)建的約束在圖中也沒(méi)有顯示。

雪花模式中可以存在切片,不僅僅在基本的 Time 維度上,也可以在規(guī)范化的 Week、Month 和 Quarter 維度上。

多對(duì)多關(guān)系

在一次飛行中,我們不僅僅只吃一頓飯。在長(zhǎng)途飛行中可能要多次用餐。在這種情況下,我們認(rèn)為事實(shí) Flight 和 Menu 維度不是一對(duì)多的關(guān)聯(lián)。我們必須使用多對(duì)多關(guān)聯(lián)。不過(guò),這種關(guān)聯(lián)不可能在星型模式中實(shí)現(xiàn)。

雪花模式的一種特殊形式是使用一種必要的數(shù)據(jù)結(jié)構(gòu)以滿足這項(xiàng)要求。

首先,我們將模型變更為事實(shí)和維度間的多對(duì)多關(guān)聯(lián)。使用 Rational Rose,這只是關(guān)聯(lián)基數(shù)的變更。

圖8 Menu 的多對(duì)多維度的星型模式

圖8 Menu 的多對(duì)多維度的星型模式

我們無(wú)法在關(guān)系數(shù)據(jù)庫(kù)中實(shí)現(xiàn)多對(duì)多關(guān)聯(lián)。實(shí)現(xiàn)多對(duì)多關(guān)聯(lián)需要使用另一種雪花模式。

在下圖中,我們關(guān)注一下已經(jīng)開發(fā)的雪花模式的一部分,該部分處理多對(duì)多維度。

圖9 雪花模式解決了 Menu 的多維度

圖9 雪花模式解決了 Menu 的多維度

Rational Rose 生成了附加的維度表 FlightMenu,它是指 Menu 維度和 Flight 事實(shí)。

確定關(guān)系用于解決多對(duì)多關(guān)聯(lián)。

對(duì)于雪花模式的架構(gòu)師來(lái)說(shuō),最重要的一點(diǎn)就是識(shí)別多對(duì)多關(guān)系。簡(jiǎn)單對(duì)象視圖可能會(huì)使設(shè)計(jì)員理解概念,而生成的數(shù)據(jù)視圖有助于進(jìn)一步深入有關(guān)實(shí)現(xiàn)的問(wèn)題。

層次

數(shù)據(jù)挖掘可以從隱藏在操作系統(tǒng)表面下的數(shù)據(jù)中發(fā)現(xiàn)信息。我們想了解的一個(gè)問(wèn)題就是選定菜單與乘客統(tǒng)計(jì)資料之間的依賴關(guān)系。

乘客統(tǒng)計(jì)資料數(shù)據(jù)可以在 Passenger 維度的層次上構(gòu)建。乘客可以根據(jù)郵政編碼分組,然后再按國(guó)家進(jìn)行分組。

圖10 乘客的層次

圖10 乘客的層次

層次通過(guò)使用聚合來(lái)指定。聚合定義了所包括的內(nèi)容。Country 包含了 ZIP 編碼,ZIP 編碼包含了多名 Passenger 信息。

最終通過(guò)使用外鍵實(shí)現(xiàn)了聚合。

圖11 雪花模式實(shí)現(xiàn)了 Passenger 維度的聚合

圖11 雪花模式實(shí)現(xiàn)了 Passenger 維度的聚合

點(diǎn)擊查看大圖

生成的約束仍然沒(méi)有在圖中表示出來(lái)。

使用聚合,維度可以在任何定義的級(jí)別上使用。分析空間可以通過(guò) Passenger、ZIP Code或者 Country 進(jìn)行切片。

一致的維度

隨著數(shù)據(jù)倉(cāng)庫(kù)架構(gòu)師不斷地添加細(xì)節(jié)內(nèi)容,雪花模式變得越來(lái)越復(fù)雜。因此設(shè)計(jì)過(guò)程必須在到達(dá)某種程度后停止以保持數(shù)據(jù)倉(cāng)庫(kù)運(yùn)行良好。

星型或者雪花模式仍然僅僅關(guān)注于一個(gè)事實(shí)--在本例中就是Flight。那么復(fù)雜關(guān)系又是什么情況呢?

對(duì)于每個(gè)事實(shí)我們都必須設(shè)計(jì)其各自的模式。如果我們想要進(jìn)行復(fù)雜查詢的話,它們就必須具有共同的維度--我們稱其為一致的維度。

讓我們使用 Pilot 作為一個(gè)維度,PilotFlight 作為一個(gè)事實(shí)來(lái)定義第二個(gè)星型模式。我們還要使用附加的 Flight Schedule 維度和 Time 維度。

圖12 Pilot 星型模式

圖12 Pilot 星型模式

第二個(gè)模式可以單獨(dú)使用或者與 Passenger 模式結(jié)合使用,從而根據(jù)使用一致維度的飛行員維度來(lái)查詢 Passenger 的滿意程度。

圖13 一致維度Time 和 Flight Schedule

圖13 一致維度Time 和 Flight Schedule

即使在使用一致維度的數(shù)據(jù)倉(cāng)庫(kù)的簡(jiǎn)單結(jié)構(gòu)中,Pilot 與 Passenger 之間的關(guān)系也是簡(jiǎn)單的。

在開發(fā)數(shù)據(jù)模型時(shí),數(shù)據(jù)倉(cāng)庫(kù)將大量小型星型模式與雪花模式相結(jié)合形成了大型的數(shù)據(jù)倉(cāng)庫(kù)模式。

事實(shí)與維度的數(shù)據(jù)

我們想要評(píng)估乘客對(duì)于飛行的滿意率??梢允褂貌粷M意到很滿意幾個(gè)級(jí)別進(jìn)行評(píng)定。評(píng)定記錄存放在事實(shí)表 Flight 中作為一個(gè)屬性(列)。

如果我們想要得出一個(gè)平均記錄,那么就必須為記錄定義值以進(jìn)行計(jì)算。我們可以將記錄分為 0 到 10 級(jí)。這樣就可以得到一個(gè)平均記錄。平均值應(yīng)該存儲(chǔ)在維度表中,以用于簡(jiǎn)單的切片,其中我們只想進(jìn)行一維切片。

Rational Rose 根據(jù)目標(biāo)數(shù)據(jù)庫(kù)的數(shù)據(jù)類型生成了實(shí)現(xiàn)屬性。對(duì)象模型是用來(lái)定義數(shù)據(jù)庫(kù)的數(shù)據(jù)源的。

結(jié)束語(yǔ)

IBM Rational Rose 是設(shè)計(jì)數(shù)據(jù)倉(cāng)庫(kù)實(shí)現(xiàn)的最佳工具。

對(duì)象模型定義了有關(guān)模式的全局結(jié)構(gòu)的對(duì)象,和包括數(shù)據(jù)源的整體數(shù)據(jù)倉(cāng)庫(kù)。它代表了數(shù)據(jù)倉(cāng)庫(kù)中有關(guān)視圖的對(duì)象,同時(shí)隱藏了實(shí)施細(xì)節(jié)。

數(shù)據(jù)模型是數(shù)據(jù)倉(cāng)庫(kù)的實(shí)現(xiàn)模型。數(shù)據(jù)模型可以從對(duì)象模型中生成,反之亦然。


數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說(shuō)明請(qǐng)參見:http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }