使用jquery

时间:2016-02-11 04:59:38

标签: javascript jquery html forms

我有一张表格。在这个表单上,当我添加行项目时,我保存输入值,然后将其添加到表单中。这部分有效。请记住,表单未提交我只是动态添加到dom

在我保存的表单部分中有一个价格输入。我使用jquerypriceformat插件将价格格式化为价格格式。例如111变为1.11美元。如果我不使用该插件,它的工作原理。该插件确实按预期工作。我认为我的问题是,在我输入后,值被更改,我需要以某种方式保留该值。

这是一个小提琴 https://jsfiddle.net/ks2z5mdo/7/

我认为小提琴将更好地展示问题所在。基本上,当您键入描述类型的数量和价格时,价格会被格式化,然后点击添加按钮,除了价格之外,所有数据都会被保存。

我该如何解决这个问题?

首先是表格

<div class="form-row">
    <strong>Line Items:</strong>
    <br>
    <div class="line-items">
        <div class="line-item">
            <div class="line-item-box description">
                <label>Description:</label>
                <textarea name="description" id="description"></textarea>
            </div><!--
         --><div class="line-item-box quantity">
                <label>Quantity:</label>
                <input type="text" name="quantity" id="quantity">
            </div><!--
         --><div class="line-item-box price">
                <label>Price:</label>
                <input type="text" name="price" id="price">
            </div>
            <button class="btn add-item">Add Item</button>
        </div>
    </div>  
</div>

然后是jquery

$(document).ready(function() {
    $('#price').priceFormat();
    $('.add-item').click(function() {
        if ($('description, #quantity, #price').filter(function() { return $(this).val(); }).length > 0) {
            var description = $('#description').val();
            var quantity = $('#quantity').val();
            var price = $('#price').val();
            $('.line-items').prepend('<div class="line-item"><div class="line-item-box description">' + description + '</div><div class="line-item-box quantity">' + quantity + '</div><div class="line-item-box price">' + price*quantity + '</div><button class="btn remove-btn">Remove</button></div>');
             return false;
         } else {
             alert('Line item empty');
         }
    });
    $(document).on('click', '.remove-btn', function() {
        $('.line-item').remove();
    });
});

1 个答案:

答案 0 :(得分:1)

您的var price = $('#price').val();会在您尝试获取的实际值前面添加$和空格。因此,一种解决方案是获取此值的子字符串以删除$:

var price = $('#price').val().substring(2);

这会将值保留为数字而不是最初生成的字符串。这是一个有效的fiddle