Yii 2 kartik dialog.prompt输入类型为textarea

时间:2018-11-09 13:52:44

标签: javascript yii2 dialog prompt kartik-v

我有一个按钮,可触发输入文字的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!")
   }
});

我发现,如果未定义类型(与我的情况下的标签和占位符不同),则默认为“文本”。但是除了简单的单行文本输入之外,我无法使对话框呈现任何类型。

2 个答案:

答案 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();