Rya*_*nal 6 javascript vb.net asp.net textbox tinymce
我<asp:TextBox TextMode="MultiLine">在页面上有几个元素.在加载时,我填充它们(通过后面的VB代码),然后将它们转换为TinyMCE编辑器(通过jQuery TinyMCE插件).每个文本框还有一个与之关联的按钮,目的是将文本提交回后面的代码以插入数据库.
我之前发现,当单击提交按钮时,我必须将编辑器的内容"保存"到文本框中,但这不是我的问题.即使在我这样做之后,编辑也没有出现在后面的代码中.
正如我所提到的,我正在使用jQuery.这是我的点击处理程序.请记住,所有按钮都是ASP.NET中的提交按钮,因此submit类:
$('input.submit').live('click', function() {
tinyMCE.EditorManager.triggerSave();
});
Run Code Online (Sandbox Code Playgroud)
因此,当单击任何提交按钮时,所有 tinyMCE编辑器都会触发其保存事件.执行完之后,我检查了我正在寻找的textarea的值,(再次,通过JavaScript),它似乎有编辑(我使用Chrome的开发人员工具和console.log):
console.log($(this).parent().find('textarea').val());
Run Code Online (Sandbox Code Playgroud)
但是,在服务器端,我在提交按钮的单击处理程序中看不到任何编辑:
Dim paragraph As String = Me.myTextArea.Text
' Results in the original text, not the edited text
Run Code Online (Sandbox Code Playgroud)
其他说明:
EnableEventValidation="false"和ValidateRequest="false"(这是一个内部应用程序,这个建议来自一个更有经验的开发人员)我已经明白了.
这正是我在对原始问题的评论中提出的建议.ASP.NET异步回发正在触发,将旧文本发送到服务器.然后我的onclick正在触发,将新文本保存到textarea,然后点击我的断点(让我看到新文本实际上已保存到文本区域).之后,服务器处理(旧)文本,在VB中命中我的断点.
似乎ASP.NET在任何发生的onclick中都是最优先考虑的,至少在使用异步方式时.这意味着通过javascript添加的任何自定义点击处理程序将在 ASP.NET单击后触发.
考虑到JS如何处理多个点击处理程序,这有点意义 - 它是先到先服务的一种流程.
在我的例子中,解决方案是在更改时保存TinyMCE编辑器的内容,而不是按下按钮:
$(this).tinymce({
script_url : '../scripts/tiny_mce.js',
theme: 'advanced',
plugins: 'save',
theme_advanced_buttons1 : 'bold,italic,underline,|,justifyleft,justifycenter,justifyright,justifyfull,|,image,link,unlink,|,fontsizeselect,forecolorpicker',
theme_advanced_buttons2 : '',
theme_advanced_buttons3 : '',
content_css : '../css/landingpage-tinymce.css',
onchange_callback: function(ed) {
ed.save();
}
});
Run Code Online (Sandbox Code Playgroud)
请注意,onchange_callback它将编辑器的内容保存到textarea.这将在编辑器添加他们称之为"撤消级别"的任何时候保存内容,这意味着用户在任何时候改变某些内容并移动光标,或者编辑器在任何时候模糊,以及其他事件.
| 归档时间: |
|
| 查看次数: |
3822 次 |
| 最近记录: |