如何获取文本框的格式化值

时间:2014-07-20 15:42:22

标签: jquery html

我有一个文本框(#price),可以在focusblur上将数字转换为货币格式:

$('#price').blur(function() {
        if ($('#price').val().length > 0) {
            $('#price').formatCurrency();
        }
    });

    $("#price").focus(function(){
        if ($('#price').val().length > 0) {
            $('#price').formatCurrency();
        }
    });

当我单击表单上的某个按钮时,它应转换#price文本框中的值(如果它尚未转换为货币格式),这里是按钮单击的处理程序(#addToTable) :

$("#addToTable").click(function() {
        i++;
        var newPrice;
        var priceText = $("#spanPrice").text();
        var toRemove = 'Each: ';
        var priceEach = priceText.replace(toRemove,'');
        var rowId = "itemEntry" + i + "";
        if ($("#price").val().indexOf('.') == -1) {
            newPrice = $("#price").formatCurrency();
            alert(newPrice);
        }
        else {
            newPrice = $("#price").val();
            alert(newPrice+" 1");
        }
        var strRowEntry = '<tr id="itemEntry' + i + '"><td class="rowItem">' + $("#itemChoice option:selected").text() +'</td><td class="rowItem">' + priceEach + '</td><td class="rowItem">' + $("#quantity").val() + '</td><td class="rowItem">' + newPrice + '</td><td class="rowItem"><a href="javascript:void(0);" onclick="doThis(' + rowId + ');"><img class="deleteRow" src="edit.png" border="0" id="imgEdit" /></a></td></tr>';
        $('#tblItems tr:last').after(strRowEntry);
        $("#modalNew").hide();
        $('#modalNew').find('input:text').val('');
        $('#modalNew').find('span').text('Each: $9.00');
        $('#modalNew').find('SELECT').val('Wine');
    });

我检查文本框是否已在if语句中转换为货币格式,如果它尚未转换,则转换为货币。如果数字已经转换,else语句只会得到值。

else语句正常,但if语句显示[object Object]

如何解决问题?

2 个答案:

答案 0 :(得分:1)

这是因为formatCurrency()没有返回格式化的值,它会在文本框中设置文本格式。因此,如果要访问格式化的值,则必须在文本框中使用val()

$("#price").formatCurrency();
newPrice = $("#price").val();
alert(newPrice);

答案 1 :(得分:0)

如果其他人遇到同样的问题,我必须将重点放在#price文本框上,然后获取值。

if ($("#price").val().indexOf('.') == -1) {
            $("#price").focus();
            newPrice = $("#price").val();
            console.log(newPrice);
            alert(newPrice);
        }