JqueryUI微调器数字格式货币提交编号值

时间:2014-09-09 19:22:25

标签: jquery jquery-ui-spinner jquery-globalization

我有一个jquery货币输入,我正在使用此代码:

$('input[name="precio"]').spinner({
    min:0,
    numberFormat: 'C'
});

输入效果很好,因为它将数字显示为带有$或€符号的数字,具体取决于全球化。

问题在于,当我提交表单时,我得到的文字就像这样的“5,00€”,我希望它是5.00或500,只是数字值。

有没有办法做到这一点?提前谢谢。

2 个答案:

答案 0 :(得分:1)

是该输入的一个名为'aria-valuenow'的属性,它获取当前数值(无格式)

http://jsfiddle.net/ma8zd7mg/1/

 $("#spinner").spinner({
     min: 0,
     numberFormat: "C"
 });

$("#test").click(function(){
    alert($("#spinner").attr('aria-valuenow'));
});

编辑(在评论中回答您的问题) 要在PHP中提交后获取值,您可以:  1.创建一个占位符输入,该输入获取微调器的数值,并提交该值  2.使用PHP去除额外的格式字符($,。和额外的零)

我推荐第一种方法,如下所示:

$("#submit-btn").click(function(e){
    //prevent the form submission
    e.preventDefault();

    //add a placeholder input with the value of the spinner
    $("#my-from").append('<input/>', {
        'type': 'hidden',
        'name': 'spinner-value',
        'value': $("#spinner").attr('aria-valuenow')
    });

    //now submit the form
    $("#my-form").submit();
});

然后在PHP中你可以得到'spinner-value'输入

<?php
$spinner = $_REQUEST['spinner-value'];
....
....
?>

答案 1 :(得分:0)

好的,我终于设法以我想要的方式做到了这一点。我刚刚创建了一个名为currencyspinner的插件,它从JQueryUI扩展了微调器,这里是代码:

$.widget( "ui.currencyspinner", $.ui.spinner, {
     options: {
        numberFormat: 'C',  // Currency Format
        min:0,
        step:0.10
    },
    _create: function(){
        this.hidden = $('<input type="hidden" value="'+this.element.val()+'" name="'+this.element.attr('name')+'">');   // Create a hidden input with the same name and value
        this.element.removeAttr('name');    // remove the name of the original element
        this.element.before(this.hidden);   // insert the hidden element before the original element
        return this._super();
    },

    _refresh: function() {
        this.hidden.val(this._parse(this.element.val()));   // put the aria-valuenow on the original element
        return this._super();
    },

    _destroy: function(){
        this.element.attr('name',this.hidden.attr('name')); // put back the name on the original value
        this.hidden.remove();                               // remove the hidden element
        return this._super();
    }
});

我创建一个具有相同名称的隐藏输入,并在每次微调器刷新时为其指定值aria-valuenow。

如果你想在创建currencyspinner后尝试访问currencyspinner,那么你就不能使用$('input[name="nameoftheelement"]').currencyspinner(...);,因为这将是隐藏的输入,而不是微调器本身。

我希望它有所帮助!