我有一个按钮,可触发输入文字的kartik dialog.prompt。 我需要对话框中的输入具有多个行和换行功能(例如textarea)
如何将其从简单的文本输入更改为textarea?
这是我的JavaScript:
$("#bulk-email-button-invitations").on("click", function() {
var grid = $("#invitations");
var keys = grid.yiiGridView('getSelectedRows');
if (keys.length >= 1){
krajeeDialog.prompt({label:'Text emailu:', placeholder:'Zadejte text emailu'}, function (result) {
if (result) {
$(location).attr('href', '/educational-event-invitation/bulk-email?' + $.param({invitations: keys, text: result}));
} else {
krajeeDialog.alert('Text emailu nesmí být prázdný!');
}
});
}else{
krajeeDialog.alert("Nejprve vyberte studenty, kterým chcete poslat email!")
}
});
我发现,如果未定义类型(与我的情况下的标签和占位符不同),则默认为“文本”。但是除了简单的单行文本输入之外,我无法使对话框呈现任何类型。
答案 0 :(得分:1)
显然,扩展程序不支持此功能。
原因是在定义dialog.js
的{{1}}中,函数KrajeeDialog.prototype
是负责要创建的提示对话框的函数,它创建默认对话框。字段类型为bdPrompt
,而不是确定传递给input
的任何选项或参数,尽管您可以像
KrajeeDialog.prompt()
的参数
type
,但这不能决定元素是krajeeDialog.prompt({
label:'Text emailu:',
placeholder:'Zadejte text emailu',
type:'password'
},function(){})
还是input
类型,此参数textarea
作为输入元素的type
传递。请参阅下面的代码块,以了解我解释第三行将始终创建输入类型的字段的原因。
attribute
第110行yii2-dialog/assets/js/dialog.js
因此,如果您想以这种方式工作,则可能需要根据需要覆盖javascript函数。
答案 1 :(得分:1)
毕竟可以将自定义html添加到krajeeDialog.prompt。 在文档中,kartik-v指出:
content:字符串|对象:如果设置为字符串,则将被视为直接显示的原始HTML内容。
因此,如果我用包含所需html的字符串替换代码中的原始对象,它将呈现我的textarea或任何其他表单元素。
例如,将其替换为textarea html:
DateTime? LastPasswordDate = !Convert.IsDBNull(row["LastPasswordDate"]) ? DateTime.ParseExact(row["LastPasswordDate"].ToString(), "yyyy-MM-dd HH:mm:ss:fff", null) : null;
insertUserCommand.Parameters.AddWithValue("@LastPasswordDate", (object)LastPasswordDate ?? DBNull.Value);
insertUserCommand.ExecuteNonQuery();