我正在使用来自ajax请求的内容设置div的innerHTML变量:
new Ajax.Request('/search/ajax/allakas/?ext_id='+extid,
{
method:'get',
onSuccess: function(transport){
var response = transport.responseText || "no response text";
$('admincovers_content').innerHTML=response;
},
onFailure: function(){ alert('Something went wrong...') }
});
回复文字包含一个表格:
<form id="akas-admin" method="post" action="/search/ajax/modifyakas/">
<input type="text" name="formfield" value="i am a form field"/>
</form>
然后我调用一个应该提交该表单的函数:
$('akas-admin').request({
onComplete: function(transport){
//alert('Form data saved! '+transport.responseText)
$('admincovers_content').innerHTML=transport.responseText;
}
});
问题是$('akas-admin)
返回null
,我试图将带有此ID的表单放在原始文档中,该文档有效。
问题:我可以以某种方式“重新验证”使用innerHTML插入的dom或access元素吗?
编辑信息:document.getElementById("akas-admin").submit()
工作正常,问题是我不想重新加载整个页面,而是将表单发布在ajax上并在回调函数中获取响应文本。
编辑:
根据提供的答案,我用以下观察者替换了我执行请求的函数:
Event.observe(document.body, 'click', function(event) {
var e = Event.element(event);
if ('aka-savelink' == e.identify()) {
alert('savelink clicked!');
if (el = e.findElement('#akas-admin')) {
alert('found form to submit it has id: '+el.identify());
el.request({
onComplete: function(transport){
alert('Form data saved! '+transport.responseText)
$('admincovers_content').innerHTML=transport.responseText;
}
});
}
}
});
问题是我到alert('savelink clicked!')
; 。 findelement不会返回表单。我试图将保存链接放在表单上方和下方。两者都不起作用。
我也认为这种做法有点笨拙,我做错了。有人能指出我正确的方向吗?
答案 0 :(得分:1)
因此$('akas-admin')
会返回null
,但document.getElementById("akas-admin")
则不会。 $
函数主要只是document.getElementById
的包装器,所以它的分解是不常见的。您是否尝试过使用Element.extend(document.getElementById('akas-admin'))
?
您是否加载了其他库?您可以在jsFiddle中重新创建问题吗?
答案 1 :(得分:0)
答案 2 :(得分:-1)
当你听到蹄节拍时,想想马不是斑马。你真的有一个id为'admincovers_content'的元素吗?