我有一个按钮,它是我Magento主题中提供的代码的一部分,根据日期/时间戳,我没有无意中编辑过它。我确信它在某个时刻正在工作,但在过去的一周内回顾了我的源代码控制,我似乎无法追踪出现问题的地方。
这是按钮HTML:
<button type="button" title="Add to Cart" class="button btn-cart" onclick="productAddToCartForm.submit(this)"><span><span>Add to Cart</span></span></button>
...但是当我点击它时没有任何反应。看起来很直接,除了我看不到/哪里有拼写错误等等。所以,我检查Firebug,我看到以下错误:
但是,当我转到“查看页面源”时,脚本确实在页面中:
<script type="text/javascript">
//<![CDATA[
var productAddToCartForm = new VarienForm('product_addtocart_form');
productAddToCartForm.submit = function(button, url) {
if (this.validator.validate()) {
var form = this.form;
var oldUrl = form.action;
if (url) {
form.action = url;
}
var e = null;
try {
this.form.submit();
} catch (e) {
}
this.form.action = oldUrl;
if (e) {
throw e;
}
if (button && button != 'undefined') {
button.disabled = true;
}
}
}.bind(productAddToCartForm);
productAddToCartForm.submitLight = function(button, url){
if(this.validator) {
var nv = Validation.methods;
delete Validation.methods['required-entry'];
delete Validation.methods['validate-one-required'];
delete Validation.methods['validate-one-required-by-name'];
if (this.validator.validate()) {
if (url) {
this.form.action = url;
}
this.form.submit();
}
Object.extend(Validation.methods, nv);
}
}.bind(productAddToCartForm);
//]]>
</script>
答案 0 :(得分:3)
$
变量与正在使用的其他JavaScript库冲突。删除包含jQuery库应该带回其他功能,以证明这是问题。
要修复它,请重写jPlayer代码(将$
替换为jQuery
),或尝试使用jQuery.noConflict()
函数。
即,这:
$(document).ready(function(){
...
......变成:
jQuery(document).ready(function(){
...
更多详情可在jQuery.noConflict()文档中找到。
在我上面的问题的这个特定示例中,我通过以下方式使用noConflict()
解决了这个问题:
$.noConflict();
jQuery(document).ready(function(){
jQuery("#jquery_jplayer").jPlayer({
ready: function () {
jQuery(this).jPlayer("setMedia", {
mp3: jQuery('#jquery_jplayer').attr('media_file')
});
},
swfPath: "/js/jplayer",
supplied: "mp3"
});
});
答案 1 :(得分:0)
似乎productAddToCartForm没有得到实例化
您可以尝试使用firebug从控制台创建VarienForm对象,以查看它是否返回了一个对象。
var tmpobj = new VarienForm('product_addtocart_form')
并查看在tmpobj中创建的内容
两个函数之后的.bind看起来也不行。你没有使用中级函数,而且函数没有返回任何东西。
更完整的示例将更容易修复。
我希望这会对你有所帮助。