从TextArea中检索文本!

时间:2009-07-01 21:00:59

标签: php javascript

您好再次感谢您的努力!由于我之前的问题没有成功,我想我会给它另一种方法。所以基本的想法是在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);
    }
}

3 个答案:

答案 0 :(得分:1)

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

$F('evtBody')

你应该使用这个:

$F($('evtBody'))

答案 1 :(得分:0)

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

答案 2 :(得分:0)

用以下代码替换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);
    }
}

告诉我它是否有效