草庐IT

javascript - ASP.NET CodeBehind 无法识别 TinyMCE Textarea 更改

coder 2024-12-23 原文

我有几个<asp:TextBox TextMode="MultiLine">页面上的元素。在加载时,我填充它们(通过后面的 VB 代码),然后将它们变成 TinyMCE 编辑器(通过 jQuery TinyMCE 插件)。每个文本框还有一个与之相关联的按钮,目的是将文本提交回后台代码以插入到数据库中。

我早些时候发现,当点击提交按钮时,我必须将编辑器的内容“保存”到文本框中,但这不是我的问题。即使在我这样做之后,编辑也没有显示在后面的代码中。

如前所述,我使用的是 jQuery。这是我的点击处理程序。请记住,所有按钮都是 ASP.NET 中的提交按钮,因此 submit类:

$('input.submit').live('click', function() {
    tinyMCE.EditorManager.triggerSave();
});

因此,当任何提交按钮被点击时,所有 tinyMCE 编辑器都会触发他们的保存事件。执行此操作后,我检查了我正在寻找的文本区域的值(再次通过 JavaScript),它似乎进行了编辑(我正在使用 Chrome 的开发人员工具和 console.log):

console.log($(this).parent().find('textarea').val());

不过,在服务器端,我没有在提交按钮的点击处理程序中看到任何编辑:

Dim paragraph As String = Me.myTextArea.Text
' Results in the original text, not the edited text

其他注意事项:

  • 每个编辑器都在自己的更新面板中
  • 由于所提交内容 (HTML) 的性质,我不得不设置 EnableEventValidation="false"ValidateRequest="false" (这是一个内部应用程序,此建议来自更有经验的开发人员)
  • 我是 .NET 的新手,但我觉得这种行为很荒谬。我一定遗漏了一些重要的东西。

最佳答案

我想通了。

这正是我在对原始问题的评论中提出的建议。 ASP.NET 异步回发被触发,将旧文本发送到服务器。然后我的 onclick 被触发,将新文本保存到文本区域,并击中我的断点(让我看到新文本实际上已保存到文本区域)。之后,服务器处理(旧)文本,在 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();
    }
});

注意 onchange_callback 将编辑器的内容保存到文本区域。这将在编辑器添加他们所谓的“撤消级别”时保存内容,这意味着任何时候用户更改某些内容并移动光标,或者任何时候编辑器模糊,以及其他事件。

关于javascript - ASP.NET CodeBehind 无法识别 TinyMCE Textarea 更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4258307/

有关javascript - ASP.NET CodeBehind 无法识别 TinyMCE Textarea 更改的更多相关文章

  1. ruby-on-rails - Ruby on Rails 迁移,将表更改为 MyISAM - 2

    如何正确创建Rails迁移,以便将表更改为MySQL中的MyISAM?目前是InnoDB。运行原始执行语句会更改表,但它不会更新db/schema.rb,因此当在测试环境中重新创建表时,它会返回到InnoDB并且我的全文搜索失败。我如何着手更改/添加迁移,以便将现有表修改为MyISAM并更新schema.rb,以便我的数据库和相应的测试数据库得到相应更新? 最佳答案 我没有找到执行此操作的好方法。您可以像有人建议的那样更改您的schema.rb,然后运行:rakedb:schema:load,但是,这将覆盖您的数据。我的做法是(假设

  2. ruby-on-rails - 由于 "wkhtmltopdf",PDFKIT 显然无法正常工作 - 2

    我在从html页面生成PDF时遇到问题。我正在使用PDFkit。在安装它的过程中,我注意到我需要wkhtmltopdf。所以我也安装了它。我做了PDFkit的文档所说的一切......现在我在尝试加载PDF时遇到了这个错误。这里是错误:commandfailed:"/usr/local/bin/wkhtmltopdf""--margin-right""0.75in""--page-size""Letter""--margin-top""0.75in""--margin-bottom""0.75in""--encoding""UTF-8""--margin-left""0.75in""-

  3. ruby-on-rails - 无法使用 Rails 3.2 创建插件? - 2

    我对最新版本的Rails有疑问。我创建了一个新应用程序(railsnewMyProject),但我没有脚本/生成,只有脚本/rails,当我输入ruby./script/railsgeneratepluginmy_plugin"Couldnotfindgeneratorplugin.".你知道如何生成插件模板吗?没有这个命令可以创建插件吗?PS:我正在使用Rails3.2.1和ruby​​1.8.7[universal-darwin11.0] 最佳答案 随着Rails3.2.0的发布,插件生成器已经被移除。查看变更日志here.现在

  4. ruby - 无法运行 Rails 2.x 应用程序 - 2

    我尝试运行2.x应用程序。我使用rvm并为此应用程序设置其他版本的ruby​​:$rvmuseree-1.8.7-head我尝试运行服务器,然后出现很多错误:$script/serverNOTE:Gem.source_indexisdeprecated,useSpecification.Itwillberemovedonorafter2011-11-01.Gem.source_indexcalledfrom/Users/serg/rails_projects_terminal/work_proj/spohelp/config/../vendor/rails/railties/lib/r

  5. ruby-on-rails - 无法在centos上安装therubyracer(V8和GCC出错) - 2

    我正在尝试在我的centos服务器上安装therubyracer,但遇到了麻烦。$geminstalltherubyracerBuildingnativeextensions.Thiscouldtakeawhile...ERROR:Errorinstallingtherubyracer:ERROR:Failedtobuildgemnativeextension./usr/local/rvm/rubies/ruby-1.9.3-p125/bin/rubyextconf.rbcheckingformain()in-lpthread...yescheckingforv8.h...no***e

  6. ruby - 无法让 RSpec 工作—— 'require' : cannot load such file - 2

    我花了三天的时间用头撞墙,试图弄清楚为什么简单的“rake”不能通过我的规范文件。如果您遇到这种情况:任何文件夹路径中都不要有空格!。严重地。事实上,从现在开始,您命名的任何内容都没有空格。这是我的控制台输出:(在/Users/*****/Desktop/LearningRuby/learn_ruby)$rake/Users/*******/Desktop/LearningRuby/learn_ruby/00_hello/hello_spec.rb:116:in`require':cannotloadsuchfile--hello(LoadError) 最佳

  7. ruby-on-rails - 项目升级后 Pow 不会更改 ruby​​ 版本 - 2

    我在我的Rails项目中使用Pow和powifygem。现在我尝试升级我的ruby​​版本(从1.9.3到2.0.0,我使用RVM)当我切换ruby​​版本、安装所有gem依赖项时,我通过运行railss并访问localhost:3000确保该应用程序正常运行以前,我通过使用pow访问http://my_app.dev来浏览我的应用程序。升级后,由于错误Bundler::RubyVersionMismatch:YourRubyversionis1.9.3,butyourGemfilespecified2.0.0,此url不起作用我尝试过的:重新创建pow应用程序重启pow服务器更新战俘

  8. ruby - Capistrano 3 在任务中更改 ssh_options - 2

    我尝试使用不同的ssh_options在同一阶段运行capistranov.3任务。我的production.rb说:set:stage,:productionset:user,'deploy'set:ssh_options,{user:'deploy'}通过此配置,capistrano与用户deploy连接,这对于其余的任务是正确的。但是我需要将它连接到服务器中配置良好的an_other_user以完成一项特定任务。然后我的食谱说:...taskswithoriginaluser...task:my_task_with_an_other_userdoset:user,'an_othe

  9. ruby - 无法覆盖 irb 中的 to_s - 2

    我在pry中定义了一个函数:to_s,但我无法调用它。这个方法去哪里了,怎么调用?pry(main)>defto_spry(main)*'hello'pry(main)*endpry(main)>to_s=>"main"我的ruby版本是2.1.2看了一些答案和搜索后,我认为我得到了正确的答案:这个方法用在什么地方?在irb或pry中定义方法时,会转到Object.instance_methods[1]pry(main)>defto_s[1]pry(main)*'hello'[1]pry(main)*end=>:to_s[2]pry(main)>defhello[2]pry(main)

  10. ruby - 无法在 60 秒内获得稳定的 Firefox 连接 (127.0.0.1 :7055) - 2

    我使用的是Firefox版本36.0.1和Selenium-Webdrivergem版本2.45.0。我能够创建Firefox实例,但无法使用脚本继续进行进一步的操作无法在60秒内获得稳定的Firefox连接(127.0.0.1:7055)错误。有人能帮帮我吗? 最佳答案 我遇到了同样的问题。降级到firefoxv33后一切正常。您可以找到旧版本here 关于ruby-无法在60秒内获得稳定的Firefox连接(127.0.0.1:7055),我们在StackOverflow上找到一个类

随机推荐