2017-02-03 44 views
1

我想添加按下超過250個字符時觸發的keydown事件。這裏是代碼,如何在Ext.Message.Box中使用keydown事件

var c = Ext.MessageBox.show({ 
    title: "Version Remarks", 
    id:'test', 
    inputType: "textareafield", 
    msg:"Please Enter Version Remarks: (Only 250 Character)", 
    width: 375, 
    buttons: Ext.MessageBox.OKCANCEL, 
    multiline: true, 
    label: Ext.MessageBox.label, 
    fn: b, 
    icon: Ext.MessageBox.INFO, 
    modal: true, 
    closable: false, 
    allowBlank: false, 

}); 

c.textArea.on('change', function (e, text, o) { 

    if (text.length > 250) { 
     c.msgButtons.ok.setDisabled(true); 
     //c.label.setText("This is the label"); 
     alert("You are not able to enter more than 250 Character.!!") 
    } else { 
     c.msgButtons.ok.setDisabled(false); 
    } 
} 

當我按下251字符彈出的是顯示器,也讓我進入角色,但現在我想用的onkeydown事件,不允許用戶輸入任何字符超過250個字符。

+0

你想通知用戶還是隻是不允許他進入? –

+0

我想通知用戶。 –

回答

1

我試過這個,它也有效。

var c = Ext.MessageBox.show({ 
     title: "Version Remarks", 
     id: 'test', 
     inputType: "textareafield", 
     msg: "Please Enter Version Remarks: (Only 250 Character)", 
     width: 375, 
     buttons: Ext.MessageBox.OKCANCEL, 
     multiline: true, 
     label: Ext.MessageBox.label, 
     fn: b, 
     icon: Ext.MessageBox.INFO, 
     modal: true, 
     closable: false, 
     allowBlank: false, 

    }); 

    c.textField.maxLength = 250; 
    c.textArea.el.dom.querySelector('textarea').onkeyup = function() { 
     if (this.value.length > 250) { 
      this.value = this.value.substr(0, 250); 
      alert("Maximum 250 characters are allowed for version remark."); 
      return false; 
     } 
    }; 
2

使用文本框的maxLength配置並調用setMaxLength將其設置爲250個字符。
來自sencha文檔。

允許的輸入字符的最大數量。

所以,你的代碼看起來像:

var c = Ext.MessageBox.show({ 
    // your config 
}); 
c.textArea.setMaxLength(250); 
2

如果不希望用戶在通知到達&字符是上限不允許他進入更charcters那麼你可以使用maxLengthtextarea元素的屬性(html不是extjs)來設置maxlength。

c.textArea.el.dom.querySelector('textarea').maxLength=250; 

要通知的用戶,我們需要使用keypress事件來檢查文本的長度,如果長度超過通知用戶250

工作實例

Ext.application({ 
 
    launch : function() { 
 
var c = Ext.MessageBox.show({ 
 
    title: "Version Remarks", 
 
    id:'test', 
 
    inputType: "textareafield", 
 
    msg:"Please Enter Version Remarks: (Only 250 Character)", 
 
    width: 375, 
 
    buttons: Ext.MessageBox.OKCANCEL, 
 
    multiline: true, 
 
    label: Ext.MessageBox.label, 
 
    icon: Ext.MessageBox.INFO, 
 
    modal: true, 
 
    closable: false, 
 
    allowBlank: false, 
 

 
}); 
 
c.textArea.el.dom.querySelector('textarea').maxLength=250; 
 
c.textArea.el.dom.querySelector('textarea').onkeypress=function(){ 
 
if(this.value.length==250){ 
 
alert("You are not able to enter more than 250 Character.!!"); 
 
return false; 
 
} }; 
 

 
} 
 

 

 
});
<link rel="stylesheet" href="https://cdn.sencha.com/ext/gpl/4.1.1/resources/css/ext-all.css"> 
 
<script type="text/javascript" src="https://cdn.sencha.com/ext/gpl/4.1.1/ext-all-debug.js"></script>

+0

確定其工作的感謝,但我需要通知用戶,您嘗試輸入超過250的字符,當用戶單擊警報的確定按鈕,然後用戶不能輸入任何東西在textarea。現在的事情是彈出顯示後輸入250個字符,但我點擊確定按鈕的彈出,然後如果我鍵入任何字符比它也顯示,然後再次彈出被激發,所以我想限制用戶輸入250字符後。我希望你明白。 –

+0

爲此,我們將使用按鍵事件來檢查長度並限制並通知用戶。看到我更新的答案 –