【问题标题】:jQuery - Setting Hidden field to Textarea contents when Textarea name is DynamicjQuery - 当 Textarea 名称为动态时,将隐藏字段设置为 Textarea 内容
【发布时间】:2013-06-05 18:54:22
【问题描述】:

我的表格的每一行都有一个文本区域。我需要将此文本区域设置为与其关联的隐藏字段的值。

textarea 和 hidden 字段的名称如下所示: 文本区域名称:

sc-(Account Name)c

隐藏字段名称:

sc-(Account Name)h

一个例子是:

文本区域:

sc-usernamec

隐藏字段:

sc-usernameh

在提交或他们键入文本时,我需要使用在文本区域中键入的内容来更新隐藏字段。我对 jQuery 和 Javascript 还很陌生,我想知道如何 a) 遍历每个 textarea 字段,在关联的隐藏字段中设置其内容,或者 b) 在输入时将隐藏字段设置为 textarea。

我不确定我应该使用哪个选项,也不知道如何编写这种性质的东西。

【问题讨论】:

  • @mplungjan 实际上,并非如此。我正在尝试实施一种解决方案,例如该页面上已回答的解决方案。我的问题不是我应该怎么做才能解决 TinyMCE 的问题,而是关于如何具体实施其中一个答案的问题,因为我不知道如何做到这一点。

标签: javascript jquery forms textarea hidden-field


【解决方案1】:

如果有问题的textarea是普通的textarea,那么你可以试试

$(function() {
    $(":hidden[name^='sc']").each(function() { // all hidden starting with sc
      var id = this.id.substring(0,this.id.length-1)+"c";
      var hid = $(this);                           
      $("#"+id).on("keyup",function() {
          hid.val($(this).val());
        });
    });
});

Live Demo

如果 textarea 被转换为编辑器,那么所有的赌注当然是关闭的 - 那么你需要阅读

jQuery and TinyMCE: textarea value doesn't submit

意思是

$(function() {
  $("#myForm").on("submit",function() {
    $('#sc_texth').val(tinyMCE.get('sc_textc').getContent());
  });
});

或者更多

$(function() {
  $("#myForm").on("submit",function() {
    $(":hidden[name^='sc']").each(function() { // hidden and starts with sc
      var textareaID = this.id.substring(0,this.id.length-1)+"c";
      $(this).val(tinyMCE.get(textareaID).getContent());
  });
});

Live Demo

【讨论】:

  • 我尝试将它放入我的代码中已经存在的
  • 我不再在我的开发计算机上,但当我在时我会尝试这个并报告结果。但我想要做的基本上是你链接到的问题所描述的:stackoverflow.com/a/2122147/1044984
  • 好的,我会尝试这两种解决方案,尽管 TinyMCE 可能不是问题。它不是在每个文本区域中都使用,但它是一个包含的脚本。
  • 您能否在询问时提供尽可能多的信息?我现在再次使用您提供的信息进行回答,然后您更改了该信息。我已经发布了一个脚本,该脚本将其他答案中的代码实现到 onsubmit 中,假设所有以 sc 开头的隐藏字段都有一个相应的编辑器,名称相同,但末尾有 c
  • 是的,下次一定会来的,麻烦您了。我已经接受了这个答案,因为您已经证明它应该有效,我必须正确实施它!谢谢!
【解决方案2】:

我想这可能对你有帮助。

<p><textarea name="sc-username" id="sc-username" ></textarea></p>
<p><textarea name="sc-usernameh" id="sc-usernameh" style="display:none;"></textarea></p>

$(document).ready(function(){  
    $("textarea").on("keyup",function() {  
        var name = $("#"+$(this).attr('name')+"h");  
        if(name)  
          name.val($(this).val());  
    });
});

【讨论】:

  • 不,我需要一个隐藏字段,而不仅仅是一个隐藏的 textarea,因为文本编辑器插件 (TinyMCE) 会干扰 textarea 的 ajax 提交。在另一个 Stackoverflow 答案中建议将内容保存到隐藏字段并改用它。
猜你喜欢
  • 2023-02-09
  • 1970-01-01
  • 2022-11-02
  • 1970-01-01
  • 2017-10-18
  • 2012-02-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-25
相关资源
最近更新 更多