【问题标题】:Is this the correct way to call a textarea in jquery?这是在 jquery 中调用 textarea 的正确方法吗?
【发布时间】:2010-11-02 08:11:51
【问题描述】:

由于某种原因,此语法不起作用,我想知道为什么。当我提醒页面中的值时,我可以看到除 textarea 值之外的所有内容。我什至没有得到一个未定义的。

var report  = $("textarea#report").val();

这是我的html:

<textarea id="report" name="report" rows="25" cols="10" style="width:100%;height:200px;"><?php echo $_POST['report']; ?></textarea>

<form id="rpt" action="">

我有 Paolo 上周帮助我编写的这段代码。这是 jquery 代码的开始,其中还混入了一些编辑器代码

$(document).ready(function()
{
  $('.error').hide();
  WYSIWYG.attach('dfarReport', rpt);
  WYSIWYG_Core.addEvent(window, "load", function()
  {
    $('#Save').removeAttr('onclick').click(function()
    {

我尝试将 Jonathan 建议的代码添加到此,但执行此操作时出现错误。为了以防万一,我还将“报告”更改为不同的内容,但这也无济于事。

它正在工作!!!!!!!!!!!!!!!!!!!!!

为了让它发挥作用。我添加了以下内容:

$(document).ready(function()
{
  $('.error').hide();
  WYSIWYG.attach('dfarReport', dfar);
  WYSIWYG_Core.addEvent(window, "load", function()
  {
    $('#Save').removeAttr('onclick').click(function()
    {
      WYSIWYG.updateTextArea('dfarReport');   <-------------- This is where it needs to go

【问题讨论】:

  • Frank,您确定文档中没有其他 ID 为 report 的元素吗?
  • Haya Paolo.. 很好,谢谢.. 你就像超人,你知道的.. 总是来帮忙。 :)
  • 是的,100% 肯定。我已经对此进行了搜索,但一无所获。这是完全独一无二的
  • 您确定要在页面加载后访问该元素吗?是代码调用 var report = $('#report').val();在 document.ready 里面?
  • 好的,是的,代码正在调用 var report = $('#report').val();里面的document.ready。至于在页面加载后访问元素,我不确定。这就是我所拥有的.. 我有一个 php case 语句,我将 jquery 指向。至于什么时候加载,我不确定。

标签: jquery


【解决方案1】:

编辑

var report  = $("textarea#report").val();

应该可以,但是,如果您通过 id 引用它,那么您也不需要使用 textarea

var report  = $("#report").val();

等价

另外,你确定这个名字吗?没有错别字?

编辑

使用 OpenWYSIWYG,在通过 javascript 调用值之前使用 WYSIWYG.updateTextArea('report');

【讨论】:

  • 谢谢乔纳森。我尝试将 val() 更改为 text() 但它仍然无法正常工作。这是查询字符串,spo=N/A&report=
  • @nutjob:你能把你正在使用的 html 包括进来吗?可能只是一个错字
  • 嗨乔纳森,我在上面发布了我的 html。我也尝试了您的编辑,但仍然没有。感谢您的帮助。
  • Paolo,我认为您在 jQuery 1.3 中是错误的。选择器引擎现在从右到左工作。所以在这种情况下,它会抓取所有 ID 为 #report 的元素,然后按 textarea 过滤。
  • cdmckay:很有趣。你有那个链接吗?
【解决方案2】:

该语法应该有效。使用 firebug 之类的方式逐步执行执行,以找出导致 Javascript 失败的原因。另请参阅:

jQuery get textarea text

【讨论】:

  • 谢谢卡里姆!我现在就去看看。你是对的.. 某些事情导致它失败了。
  • 链接对我来说是希腊语。该帖子中使用的语法似乎正是此处提供的语法。 :( 我有萤火虫,我一直在看它,但我不知道如何“逐步通过”js。你能告诉我怎么做吗?也许我可以在那里看到一些东西。
【解决方案3】:

另外,请确保您拥有正确的 ID。试试:

alert($("textarea#report").length);

还要检查以确保您没有在 id 前面加上 #。我偶然发现我有时会这样做:

<textarea id="#report"></textarea>

...而不是...

<textarea id="report"></textarea>

【讨论】:

  • 是我看到的另一个常见错误
  • 感谢 cdmckay。我看了看那里没有这个符号。我贴了上面的html。
  • 您没有指定,但我认为您的意思是我不应该使用 name=。我删除了它,但仍然没有。
【解决方案4】:

我建议您通过validator 运行整个页面,因为您的代码看起来应该可以工作。另外,你是在 $(document).ready() 函数内做的吗?如果没有,您可能会在页面完全加载之前执行代码。

【讨论】:

    【解决方案5】:

    我刚刚在 asp.net MVC 1.0 中尝试了以下操作,效果很好: var rpt = $("#report").val(); 警报(rpt);

    正确的方法是使用如上所示的id。虽然 $("textarea#report") 也可以工作,但速度较慢。 $("#report") 使用 DOM 方法 getElementById 并且是获取元素引用的最快方法。请记住,ID 区分大小写。

    【讨论】:

    • 嗨,Momin,由于某种原因,它不起作用。我试过只使用元素的 id,但它不会工作。报告的查询字符串只是空白
    • Momin,我没有看到代码末尾的警报。我试过了,就像你有它一样,我得到了 [object object]
    【解决方案6】:

    尝试使用简单的 javascript getElementById 方法,看看它是否工作如下:

    alert(document.getElementById("report").value);

    如果可行,则 jquery 可能有问题,您可能需要使用 jquery 的调试版本对其进行调试。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-12-10
      • 2015-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多