我已将jquery(1.11.1)脚本添加到业务催化剂站点购物车页面,以隐藏或显示消息,具体取决于用户点击的下拉列表。它在jsfiddle http://jsfiddle.net/NathanHill/462tk/中多次运行,但在浏览器中只运行一次。下拉后,javascript目前处于排队状态。
我无法控制html下拉列表,因此我无法在html onchange中插入任何函数。
HTML:
<select onchange="SomeBCfunction(a,b,c);" id="shippingCountry">
<option value="AF">AFGHANISTAN</option>
<option value="AX">ALAND ISLANDS</option>
<option value="GB" selected="selected">UNITED KINGDOM</option>
</select>
<div id="zones">Show message</div>
使用Javascript:
<script type="text/javascript">
$(document).ready(function(){
$('#shippingCountry').on('change', function() {
if ( this.value == 'GB')
{
$("#zones").show();
}
else
{
$("#zones").hide();
}
});
});
</script>
任何帮助都将不胜感激。
我尝试添加/附加到触发的现有BC函数Eg:
var SomeBCfunction = oldBCfunction
Function SomeBCfunction (){
//my hide-display code
oldBCfunction;
}
但无处可去......
答案 0 :(得分:0)
它适用于chrome版本35.0.1916.153 m。
聚苯乙烯。删除了onchange =&#34; SomeBCfunction(a,b,c);&#34;因此,每次更改所选项目时,浏览器都会出现错误并且错误,但即使使用onchange也可以多次,如果未使用,则应删除它。
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
</head>
<div class='required'>
<select id="shippingCountry">
<option value="AF">AFGHANISTAN</option>
<option value="AX">ALAND ISLANDS</option>
<option value="GB" selected="selected">UNITED KINGDOM</option>
</select>
<div id="zones">Show message</div>
</div>
<script type='text/javascript'>
$(document).ready(function(){
$('#shippingCountry').on('change', function() {
if ( this.value == 'GB')
{
$("#zones").show();
}
else
{
$("#zones").hide();
}
});
});
</script>
答案 1 :(得分:0)
不是最好的方法,但你试过
$('#shippingCountry').on('click', function() {
你是否检查过,如果有其他脚本阻止或使用了这些事件?
答案 2 :(得分:0)
您是否尝试仅创建BC写入HTML的函数?
function SomeBCfunction() {
if $('#shippingCountry').val() == "GB" {
$("#zones").show();
}
else
{
$("#zones").hide();
}
}
}
也许您可以使用新功能覆盖旧功能并包含您需要的操作:
var old_foo = foo;
foo = function() {
old_foo();
bar();
}
答案 3 :(得分:0)
每次更改时,BC都会丢弃#catCartDetails
的全部内容,包括您附加的所有事件处理程序。
您可以通过重新定义最初在window.UpdateShipping()
中定义的函数/CatalystScripts/Java_OnlineShopping.js
来阻止或挂钩。
在您的情况下,创建一个在ApplyDiscountCode()
之后调用的函数应该允许您根据#zones
的值显示jQuery('#shippingCountry').find(":selected").text()
。
window.UpdateShipping = function(e, t, n) {
var r = document.getElementById("catCartDetails");
if (r) {
var i = CMS.OrderRetrievev2.ServerSideUpdateShipping(t, e, n);
if (i.value[0]) {
r.innerHTML = i.value[2];
// Your logic here:
checkShippingCountry();
}
if (i.value[1].length > 0) {
if (/(iP[ao]d|iPhone).*?Safari/.test(navigator.userAgent)) {
setTimeout(function() {
alert(i.value[1])
}, 0)
} else {
alert(i.value[1])
}
}
}
};