2015-11-19 29 views
0

有沒有辦法在ember中使用checkValidity()setCustomValidity()?例如,在提交我的控制,我有:emberjs輸入checkValidity和setCustomValidity

var inpObj = this.get('name'); 
if (inpObj.checkValidity() == false) { 
    alert('ok'); 
} 

當然,這是我的車把代碼:

{{input id="name" type="text" value=name placeholder="Your Name" required="true"}} 

在提交此,我收到此錯誤信息:

inpObj.checkValidity不是函數

回答

0

您需要獲取HTML5元素而不是字符串來調用checkValidity函數。

var inpObj = this.get('name'); // this is only a string 

您可以使用jQuery來代替:

var inpObj = Ember.$('#name')[0]; 

if (inpObj.checkValidity() == false) { 
    alert('ok'); 
} 

Working demo.

+0

解決方案的工作! ...我希望儘可能避免使用jQuery。問題,Ember。$做了什麼?爲什麼不使用$ – Matt

+0

'Ember。$'是另一種訪問jQuery的方法,如果您不想使用全局變量'$'來訪問它。如果要創建另一個從'Ember.TextField'擴展的組件,並在其中集成有效性檢查,然後通過操作將信息傳播到控制器,則可以避免使用jQuery。 –

0

如果你想避免的jQuery,你可以設置你的提交按鈕運行爲您有效的檢查行動。

<button {{action "submitForm"}}>Your Button</button> 

然後有一個動作在你的位指示:

actions: { 
    submitForm() { 
    var inpObj = this.get('name'); 
    if(!inpObj.checkValidity()) { 
     // error handling 
     alert('ok'); 
    } else { 
     // save your data, or whatever you need to do 
     this.transitionTo('some.route'); 
    } 
    } 
}