2017-06-06 223 views
0

我的WordPress主题与WooCommerce交互,因此当用户从下拉菜单中选择特定的产品变量时,会显示其区域的特定价格。模拟鼠标点击下拉菜单

这工作正常,当用户手动选择下拉,但是,我试图通过基于浏览器cookie(或缺少一个)为用户预先选择适当的选项来加速该过程。

例如,如果用户还没有进入他们的区域他们的浏览器将不会有我命名“PC-进入”和下面的jQuery脚本将运行的cookie:

$(function() { 
    $('ul li.product').each(function() { 
     /*If no region set by cookie*/ 
     if(document.cookie.indexOf("pc-entered=") < 0) { 
      /*Set downdown to generic*/ 
      $(this).find("#pa_region").val('generic'); 
     } 
    }); 
}); 

这工作,自动成功预先选择正确的“通用”下拉选项。

不幸的是,这是我卡住的地方 - 虽然下拉是正确的,但价格并不像自动填充区域时那样自动填充。

E.g.

1)当使用我的脚本自动填充:

2)当用户选择:

enter image description here enter image description here

我试着在我的脚本替换这个:

$(this).find("#pa_region").val('generic'); 

然而,在this thread上列出的选项,它们在这种情况下似乎不起作用。我也尝试在页面上的所有其他脚本之后触发脚本,甚至延迟脚本运行超时功能,但似乎没有任何工作。

我的测试网站是here

TLDR -为什么我的jQuery脚本没有填充价格?

回答

1

随着$(this).find("#pa_region").val('generic');你只是改变下拉的HTML值(文本)。

您需要将触发更改的事件处理程序附加到更改值的函数。

function changeValue(){ 
    $("#pa_region").val('generic'); 
    $("#pa_region").trigger('change'); 
} 

$("#pa_region").change(function() { 
    console.log("Handler for .change() called."); 
}); 

这是如何解决它的方法。

我也做了JSFiddle所以你可以测试它。

+0

感谢你的理解,我只是在改变HTML。快速的问题,在你的JSFiddle中,通过点击按钮来触发该功能。如何在页面加载时触发该功能,同时保留现有的每个功能? – Dan382

+1

如果我正确地理解了你,你可以在document.ready函数中添加触发器。 https://jsfiddle.net/2rkkb3jh/4/ – Dino