javascript - jquery 变量在更新时不会改变

标签 javascript jquery

这是我的问题的简化。我想在输入字段后附加一些文本(在更新同一字段时),仅当选择元素的值为 IT 时。

这就是字段:

<select id="billing_country">
    <option value="FR">FR</option>
    <option value="IT">IT</option>
</select>

<input type="text" id="woocommerce_cf_piva">

这是脚本:

jQuery(document).ready(function () {

var $country_select = jQuery('#billing_country');

// When country change
$country_select.change(function () {

    var $country = jQuery('#billing_country option:selected');

    $country.each(function() {

        FieldCheck(jQuery(this).val());
    })
});

function FieldCheck($country) {

    var $element = jQuery('#woocommerce_cf_piva');

    if ($country == 'IT') {

        $element.change(function () {

            $element.after($country);
        });
    }
}
});

您可以see this also on jsFiddle

如果我选择 FR,为什么还会附加国家/地区名称?

最佳答案

很难理解您想要用代码做什么。

您希望文本输入仅在选择框选择了“IT”时才更改其值吗?

为什么要在文本输入上设置 change 处理程序?

如果是单个选择,为什么要遍历选择框的选项?只需使用所选选项的值设置文本输入,例如

$(function() {
  var $billingCountry = $('#billing_country');

  $billingCountry.change(function() {
    var $country = $('#billing_country option:selected');
    fieldCheck($country.val());
  });

  function fieldCheck(country) {
    var $element = $('#woocommerce_cf_piva');
    if ($country !== 'IT') {
      return;
    }

    $element.val(country);
  }
});

https://jsfiddle.net/davelnewton/w5deffvk/

编辑

  • 命名约定已更改以反射(reflect)典型的 JS
    • 非构造函数名称以小写字母开头
    • 非 JQ 元素变量没有前导 $
  • 国家/地区值用作保护子句而不是嵌套逻辑
    • 这段代码很简单,但嵌套会让事情变得更难推理

关于javascript - jquery 变量在更新时不会改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34950665/

相关文章:

javascript - 可编辑 div 中的文本计数和子字符串

javascript - 在 keyup() 之后迭代时 jQuery 卡住

javascript - 可重用的 ember 组件,具有自己的数据源

javascript 函数执行顺序错误?关于异步的事情?

javascript - 使用绝对定位在内容上方显示图像

javascript - 类内的方法在单元测试中未执行

javascript - 更改 jtable (jquery) 操作选项运行时

javascript - jquery-ui-map 设置缩放级别

jQuery 隐藏/显示并在悬停时滑动...更好的方法吗?

javascript - 如何使用选择选项在javascript中创建动态表格列