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