javascript - 模拟鼠标点击下拉菜单

标签 javascript jquery wordpress woocommerce

我的 Wordpress 主题与 WooCommerce 交互,以便当用户从下拉列表中选择特定产品变量时,会显示其所在地区的特定价格。

当用户手动选择下拉菜单时,这工作正常,但是,我试图通过根据浏览器 cookie(或缺少浏览器 cookie)为用户预先选择适当的选项来加快该过程。

例如,如果用户没有输入他们的区域,他们的浏览器将不会有我命名为“pc-entered”的 cookie,并且将运行以下 jQuery 脚本:

$(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');  
        }
    });
}); 

这有效,成功地自动预选了正确的“通用”下拉选项。

不幸的是,这就是我陷入困境的地方 - 尽管下拉列表是正确的,但价格不会像用户手动选择其区域时那样自动填充。

例如

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

2) 当用户选择时:

enter image description here enter image description here

我尝试在我的脚本中替换它:

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

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

我的测试站点是here .

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

最佳答案

使用 $(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这样你就可以测试它。

关于javascript - 模拟鼠标点击下拉菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44395012/

相关文章:

php - 通过 WooCommerce 产品设置中的自定义复选框将类添加到 WooCommerce 页面

javascript - 如何修复语法错误: function statement requires a name

javascript - 在 Wordpress Genesis Framework 上向下滚动页面时向标题添加颜色

javascript - 在 jQuery 中将一列的内容复制到另一列

mysql - 将 MySQL 列中的值从第 x 行替换为第 y 行

php - 自定义和新员工的最佳 CMS?

javascript - 错误 : Templates should only be responsible for mapping the state to the UI. 避免在模板中放置有副作用的标签,例如 &lt;script&gt;

javascript - 将欧元符号作为 URL 参数传递时出现问题

javascript - 如何在 webpack 中使用 babel-loader 选择性地处理 node_modules 中的代码?

jquery - 在 jQuery 中序列化为 JSON