javascript onclick警报无法正常工作

时间:2014-02-27 21:08:26

标签: javascript

我有一个自动生成的表单,使用ajax提交数据,如下所示在joomla CMS中:

请注意,我不能对此表单进行任何修改,否则它将不再提交数据。每次页面加载时,composer_965292549也会改变。

<form name="dc_submit" autocomplete="off" class="form-horizontal" action="/demo?controller=posts&amp;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()往往会起作用,但如果我这样做,数据永远不会到达数据库。我无法取代它。请建议。

4 个答案:

答案 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&amp;task=reply"
    method="post" OnSubmit="discussReplySubmit('composer_965292549')">
    First name: <input type="text" name="fname">
    <input type="submit" value="Submit" />
</form>