我的代码(下方)适用于Internet Explorer,但不适用于Chrome,Safari或Mozilla Firefox。不知道为什么,但有人可能指出我正确的方向吗?这段代码有一些按钮可以改变表单的action属性,并将数据导向不同的PHP控制器文件,做不同的事情,比如创建用户,修改用户等等。
JavaScript代码:
<script language="javascript">
function formAction(flag) {
switch (flag){
case "create":
document.forms.useraction.action = "/apps/portal_admin/create_user1.php";
break;
case "modify":
document.forms.useraction.action = "/apps/portal_admin/modify_user1.php";
break;
case "copy":
document.forms.useraction.action = "/apps/portal_admin/copy_user1.php#user2";
break;
}
document.forms.useraction.submit();
}
function helloworld() {
alert("Hello World");
}
</script>
PHP代码:
<?php
if ($authlib->auth_authobj($posting_userid,$_COOKIE['shost_app_id'],'002')>=2) {
echo "<input type=\"button\" value=\"Create User\" class=\"formButton\" name=\"create\" id=\"create\" onClick=\"formAction('create')\">\n";
echo "<input type=\"button\" value=\"Copy User\" class=\"formButton\" name=\"copy\" onClick=\"formAction('copy')\">\n";
}
if ($authlib->auth_authobj($posting_userid,$_COOKIE['shost_app_id'],'002')>=3) {
echo "<input type=\"button\" value=\"Edit User\" class=\"formButton\" name=\"modify\" onClick=\"formAction('modify')\">\n";
echo "<input type=\"button\" value=\"This button works\" class=\"formButton\" name=\"Working\" onClick=\"helloworld()\">\n";
}
?>
答案 0 :(得分:1)
我假设您在页面上只有一个表单。您的代码有两个错误。
<强> 1 强> 要解决您的问题,请更改所有
document.forms.useraction.action
到
document.useraction.action
<强> 2 强>
另请注意,formAction是一个保留的处理程序。您不能将形成用作函数名称。将函数名称更改为formActionz或其他:
function formActionz(flag)
答案 1 :(得分:0)
根据TheNoble-Coder的回答,重新构建代码可能会更好,如下所示:
var actions = {
'create': '/apps/portal_admin/create_user1.php',
'modify': '/apps/portal_admin/modify_user1.php',
'copy': '/apps/portal_admin/copy_user1.php#user2'
};
function formHandler(event)
{
var target = window.event.target || window.event.srcElement,
form = document.forms['useraction'];
form.action = actions[target.name];
form.submit();
}
小提琴: http://jsfiddle.net/AmmTZ/
如果您使用jQuery,则可以使用以下代码并避免在元素上使用onclick=
$(function() { // Shorthand for $(document).ready
$('[name=create], [name=modify], [name=copy]')
.click(function() {
$('form[name=useraction]').prop('action', actions[this.name]);
});
});