【问题标题】:Split option value and add to field拆分选项值并添加到字段
【发布时间】:2012-06-20 08:32:17
【问题描述】:

我有

<select id="symb" class="big" name="symb">
  <option value="1#10#6">Basic Personal</option>
  <option value="2#20#6">Basic Family</option>
  <option value="10#90#12">Advanced Personal</option>
  <option value="11#120#12">Advanced Family</option>
</select>

我需要拆分所选值并将中间数字添加到字段#cost。

同一表单上还有其他控件会添加它们的值#cost,因此我必须考虑到我需要保留初始值并在 #symb 的 onblur/onchange 事件上添加选项值。

您也可以查看我的other question,以便了解更大的情况。

【问题讨论】:

    标签: jquery select split


    【解决方案1】:
    $("#symb").change(function(){
       $("#cost ").val($("option:selected", this).val().split("#")[1])
    });
    

    【讨论】:

    • 他想将值添加到#cost 而不是覆盖它
    【解决方案2】:
    $("#symb").change(function(){
            $("#cost").val(parseInt($("option:selected").val().split('#')[1])+parseInt(document.getElementById("cost").defaultValue))
        });
    

    【讨论】:

    • 我是把它放在onready函数还是用户定义函数中,并在每个表单控件发生更改时调用它?
    • 好的,它可以工作,但并不完全正确。问题是,它会将#symb 的值添加到#cost,但是如果我选择一个值较低的#symb 选项,它会继续添加到#cost,而不是减去。
    • 表示当#cost 大于#symb 值时需要减法
    • 假设 #cost 最初是 20,我选择 #symb->90 所以 #cost 现在应该是 90+20=110。然后,我返回并选择#symb->20,#cost 应该是 20+20=40。
    • 在您的帮助下终于找到了解决方案。检查我上面的答案。谢谢!
    【解决方案3】:

    在有人遇到麻烦的帮助和我自己的一点运气的帮助下,我找到了我正在寻找的解决方案。我将其发布在这里以供将来参考。

    var initial; 
        $("#symb").focus(function () {
            initial = parseInt($("#cost").val()); // assign the initial value before change
        }).change(function() {
            var symb =  parseInt($("option:selected").val().split('#')[1]);
            $("#cost").val(parseInt(initial+(symb-initial))); 
        });
    

    【讨论】:

      猜你喜欢
      • 2018-09-30
      • 2019-02-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多