Jquery:从字符串中提取数字并写入属性

时间:2014-06-20 15:58:40

标签: javascript jquery attributes

我有一个带有select元素的表单。 我试图找出一种方法从文本中提取数字($ Dollar amount)并将其写入属性 - 选项值(所以我可以做一些计算)。

我拥有的是:

<select id="myselectbox" class="form-select">
  <option value="_none">- None -</option>
  <option value="7" selected="selected">An item - $1.99/ea</option>
  <option value="8">Another item - $2.89/ea</option>
</select>

我想看到的是:

  <option value="1.99" selected="selected">An item - $1.99/ea</option>

我是Jquery和javascript的新手,所以如果有人能指出我正确的方向,我将非常感激! (或者甚至可以提供一些示例代码!:)

2 个答案:

答案 0 :(得分:1)

$(function() {
    $('#myselectbox').find('option:gt(0)').each(function() {
        this.value = $(this).text().replace(/^.*\$([^\/]+)\/.*$/,'$1');
    });
    console.log( $('#myselectbox').html() );
});

输出:

  <option value="_none">- None -</option>
  <option value="1.99" selected="selected">An item - $1.99/ea</option>
  <option value="2.89">Another item - $2.89/ea</option>

WORKING JSFIDDLE DEMO

答案 1 :(得分:1)

您可以尝试以下jQuery脚本:

jQuery(document).ready(
    function() {
        var options = jQuery("option");
        jQuery.each(options, function(index, value) {
            var value = jQuery(this).text();
            var re = /\$?(([1-9][0-9]{0,2}(,[0-9]{3})*)|0)?\.[0-9]{1,2}/;
            var matches = value.match(re);

            if (matches) {
                var amount = matches[0].slice(1, matches[0].length - 1);
                jQuery(this).attr("value", amount);
            }
        });
    }
);

以下是工作演示@ jsfiddle