我有一个自动生成的表单,使用ajax提交数据,如下所示在joomla CMS中:
请注意,我不能对此表单进行任何修改,否则它将不再提交数据。每次页面加载时,composer_965292549也会改变。
<form name="dc_submit" autocomplete="off" class="form-horizontal" action="/demo?controller=posts&task=reply" method="post">
First name: <input type="text" name="fname">
<input type="submit" value="Submit" onclick="discuss.reply.submit('composer_965292549');return false;">
</form>
现在我想添加一个javascript警报,这里是代码
<script type="text/javascript">
function discuss.reply.submit()
{
alert("his");
}
</script>
现在,这个javascript警报不起作用。用discuss()替换discuss.reply.submit()往往会起作用,但如果我这样做,数据永远不会到达数据库。我无法取代它。请建议。
答案 0 :(得分:1)
存在的是基于对象
discuss = discuss || {};
discuss.reply = discuss.reply || {}
discuss.reply.submit = function() {
alert("xxx");
}
或者如果代码已经出现,你可以覆盖它
discuss.reply.submit = function() {
alert("xxx");
}
这将覆盖默认功能。意思是,它不会做它以前做过的事情。如果你仍然想要调用它,你可以复制旧的并调用它。
var _org = discuss.reply.submit;
discuss.reply.submit = function() {
alert("xxx");
_org.apply( this, arguments );
}
答案 1 :(得分:0)
函数名称为discuss.reply.submit
。这不是有效的函数名称,请参阅变量名称上的this stackoverflow帖子,适用相同的规则。一个好的函数名称是onDiscussReplySubmit
。
答案 2 :(得分:0)
您的函数名称意味着诸如
之类的结构 var discuss ={ "reply" : { "submit" : function(){alert("his");}}}
这是一个不是函数名的对象。更改函数名称或创建对象。
答案 3 :(得分:-1)
首先,你不能在JS函数名称上使用点。
<script type="text/javascript">
function discussReplySubmit(x)
{
alert(x);
}
</script>
其次,如果你不想提交表单,他们会用按钮替换提交:
<input type="button" value="Submit" onclick="discussReplySubmit('composer_965292549')" />
最后,如果您要提交表单,请不要在提交按钮上使用onclick事件,请使用Form的OnSubmit事件:
<form name="dc_submit" autocomplete="off"
class="form-horizontal" action="/demo?controller=posts&task=reply"
method="post" OnSubmit="discussReplySubmit('composer_965292549')">
First name: <input type="text" name="fname">
<input type="submit" value="Submit" />
</form>