在magento的结帐页面上,我收到此错误:
VarienForm is not defined
[Break On This Error]
var loginForm = new VarienForm('login-form', true);
但是当我输入用户名和密码时,它会将我登录。我可以删除错误吗?
PS:我已经将varien js库移到了页脚。
答案 0 :(得分:0)
看起来您正在尝试调用尚未定义的函数,在JavaScript中,您需要在使用变量,函数和对象之前声明它们。
如果将所有定义移到页脚并尝试在页面中间调用它们,则会出现“未定义”错误。
// Example Success
var test = "OK!";
alert(test) // Alerts: OK!
// Example Fail
alert(test); // Alerts: undefined
var test = "OK!";
简单示例,但它适用于上述所有内容,您使用的所有内容必须在使用之前进行定义。
$(function() {
// Define VarienForm here somewhere
var loginForm = new VarienForm('login-form', true);
});
此代码应在您的页面上运行,没有未定义的错误,可以放在页脚或标题中。
答案 1 :(得分:0)
错误意味着您的脚本不起作用 - 就是这样。您登录的事实与VarienForm对象无关 - 这是一个带提交按钮的HTML表单,因此它当然会提交并登录您.VarienForm的主要任务是在提交之前验证表单数据。因此,通常如果您尝试使用空密码或登录进行登录,VariendForm会阻止提交表单。在您的情况下,当脚本被破坏时,它在提交之前就不会做任何事情。
所以,对不起,但最好的建议是 - 不要移动这个库。是的,您可以修复每个页面,您将遇到此错误,但这将花费很多时间。如果您要安装第三方扩展程序,您很可能也必须修改它们。我不认为,这种优化是值得的。
PS。除非你正在玩Magento 2,否则VarienForm基于Prototype,而不是jQuery,所以你的标签是不正确的,SnapGravy的代码很可能不起作用。
答案 2 :(得分:0)
可能是javascript框架冲突。
jQuery与Prototype冲突,这是优先使用的购物车功能,验证和窗帘效果。
在Prototype之前加载jQuery,然后调用jQuery noconflict函数。
在这里回答jQuery in Magento
将varien内容移回其所属的位置。框架需要在页面加载之前加载,以便它们正常运行。