我有一个jquery货币输入,我正在使用此代码:
$('input[name="precio"]').spinner({
min:0,
numberFormat: 'C'
});
输入效果很好,因为它将数字显示为带有$或€符号的数字,具体取决于全球化。
问题在于,当我提交表单时,我得到的文字就像这样的“5,00€”,我希望它是5.00或500,只是数字值。
有没有办法做到这一点?提前谢谢。
答案 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(...);
,因为这将是隐藏的输入,而不是微调器本身。
我希望它有所帮助!