【问题标题】:Retrieve text from TextArea!从 TextArea 中检索文本!
【发布时间】:2009-07-01 21:00:58
【问题描述】:

再次您好,感谢您的努力!由于我之前的问题没有成功,我想我会给它另一种方法。所以基本的想法是在 mysql 上更新我的日历事件:

$eventQuery = mysql_query("SELECT id, body FROM tblCalEvent WHERE id= '$eid'", $conn);

它单独位于 PHP 文件中,通过返回 ID 和 Body 可以正常工作。现在,我需要将正文显示在此表单的 textarea 中(它位于具有所有 javascript 功能的主页上):

 <div style="display: none; margin-top: 10px;" id="editEvent">      
        <br>
                    <textarea id="evtBody" cols="20" rows="5" wrap="hard"></textarea>
        <br>
        <input type="button" value="save changes" onClick="updateEvent(($F('eid'),$F('evtDay'));">
        <input type="button" value="Cancel" onClick="Element.hide('editEvent');">

当我调用这个函数时:

function editEvent(eid, body) {

    if(Element.visible('editEvent')) {
        // do nothing, its already visble.
    } else {
        setTimeout("Element.show('editEvent')", 300);
    }
}

然后表单通过传递之前的 eid 和编辑的正文调用下面的函数:

function updateEvent(eid, body) {

    new Ajax.Updater('editEvent','rpc.php', {method: 'post', postBody: 'action=updateEvent&&eid='+eid+'&body='+body+'', onSuccess: Element.hide('editEvent')});

    if(Element.visible('editEvent')) {
    Element.hide('editEvent');
    } else {
        setTimeout("Element.show('editEvent')", 300);
    }
}

感谢您的建议!以下是我尝试失败的方法!

大家好,提前感谢您的帮助! 这真的让我发疯!我要做的是通过编辑我的 PHP 文件中以这种形式回显的文本来编辑日历上的事件:

echo '<div style="background-color: white; margin-bottom: 4px; padding: 1px;" id="event_'.$e_id.'">
<textarea id="evtBody" cols="20" rows="5" wrap="hard"> '. nl2br($e_body) .'/textarea>
<input name="save" id = "save" type="button" value="Save" style="height:1.8em;width:3.5em;" onClick="updateEvent(('.$e_id.'), $F(\'evtBody\'))"/>

除了最后一部分 $F(\'evtBody\') 之外,一切正常,该函数返回一个空字符串,这在我的数据库中是不允许的。

这是我当前的功能:

function updateEvent(eid, body) {

    alert(eid);// returns the Event ID correctly
    alert(body);// returns an empty string instead of text in the text area

    new Ajax.Updater('editEvent','rpc.php', {method: 'post', postBody: 'action=updateEvent&&eid='+eid+'&body='+body+'', onSuccess: Element.hide('editEvent')});

    if(Element.visible('editEvent')) {
    Element.hide('editEvent');
    } else {
        setTimeout("Element.show('editEvent')", 300);
    }
}

【问题讨论】:

  • 如果您将代码缩进 4 个空格,它将正确转义并突出显示。请修复您的帖子,因为您已经删除了括号,我不确定我是否可以在保持原始代码不变的情况下做到这一点。
  • 我已经尝试过解决这个问题 - 希望这是正确的。
  • @Greg - 我认为它的 Prototype/Script.aculo.us 什么的。在那些中,它得到一个表单值。
  • 是 .'/textarea>(缺少
  • 原始代码是否生成有效的html?似乎缺少很多左括号和右括号。

标签: php javascript


【解决方案1】:

您没有正确使用 $F() 函数。见this Prototype page。您应该将一个元素传递给 $F() 但您传递的是一个 ID。所以,而不是这个:

$F('evtBody')

你应该使用这个:

$F($('evtBody'))

【讨论】:

  • 我试过了,我一定是做错了什么,但我放弃了,我将尝试 JQuery 来解决这个问题
【解决方案2】:

如果我正确阅读了代码(有点乱...),您使用的是单引号,因此 $F 将永远不会被执行/解析,它只会在您的 html 源代码中显示 $F。

【讨论】:

  • 我认为 $F 应该在 javascript 中——某些 javascript 库(不是 jQuery)的一部分
  • 啊,在那种情况下很难说为什么它返回一个空字符串,因为没有给出函数......
  • $F 是 Prototype.js 的一部分,我不知道为什么我不能让它工作(我明白这是人为(我)的错误:),我会尝试通过以下方式解决这个问题使用 JQuery 感谢您的帮助
【解决方案3】:

用以下代码替换 updateEvent() 函数:

function updateEvent(eid, body) {

    new Ajax.Updater('editEvent','rpc.php', {
        method: 'post',
        parameters: {
            action: 'updateEvent',
            eid: eid,
            body: body
        },
        onSuccess: Element.hide('editEvent')
    });

    if(Element.visible('editEvent')) {
    Element.hide('editEvent');
    } else {
            setTimeout("Element.show('editEvent')", 300);
    }
}

告诉我它是否有效

【讨论】:

  • 另外,你应该检查你的 HTML,因为我看到了 /textarea> 但它应该是
  • 抱歉 Pedro,我从这部分代码中稍作休息,但答案是否定的,它不起作用,这可能是在 rpc.php 上,我的 $F( ) 函数,我将使用 JQuery 来解决这个问题。感谢您的所有帮助
猜你喜欢
  • 2016-09-17
  • 1970-01-01
  • 2015-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-02
  • 1970-01-01
  • 2015-12-09
相关资源
最近更新 更多