AutoNumeric.js удаляет форматирование перед отправкой формы
Я использую плагин jQuery AutoNumeric, но когда я отправляю форму, я не могу удалить форматирование полей перед POST
.
Я пытался использовать $('input').autonumeric('destroy')
(и другие методы), но он оставляет форматирование текстовых полей.
Как я могу POST
неформатированные данные на сервер? Как я могу удалить форматирование? Есть ли атрибут для него в исходном конфиге или где-то еще?
Я не хочу отправлять сериализованные данные формы на сервер (с AJAX). Я хочу отправить форму с неформатированными данными, как обычное действие HTML.
Ответы
Ответ 1
Я написал лучший, несколько более общий взлом для этого в jQuery
$('form').submit(function(){
var form = $(this);
$('input').each(function(i){
var self = $(this);
try{
var v = self.autoNumeric('get');
self.autoNumeric('destroy');
self.val(v);
}catch(err){
console.log("Not an autonumeric field: " + self.attr("name"));
}
});
return true;
});
Этот код очищает форму w/обработку ошибок от неавтономных значений.
Ответ 2
Внутри обратного вызова данных вы должны вызвать метод getString, как показано ниже:
$("#form").autosave({
callbacks: {
data: function (options, $inputs, formData) {
return $("#form").autoNumeric("getString");
},
trigger: {
method: "interval",
options: {
interval: 300000
}
},
save: {
method: "ajax",
options: {
type: "POST",
url: '/Action',
success: function (data) {
}
}
}
}
});
Ответ 3
Используйте метод get
.
'get' | возвращает неформатированный объект через ".val()" или ".text()" | $(Селектор).autoNumeric( 'получить');
<script type="text/javascript">
function clean(form) {
form["my_field"].value = "15";
}
</script>
<form method="post" action="submit.php" onsubmit="clean(this)">
<input type="text" name="my_field">
</form>
Это всегда будет отправлять "15"
. Теперь сделайте объявление:)
Зеркальное исходное значение:
<form method="post" action="submit.php">
<input type="text" name="my_field_formatted" id="my_field_formatted">
<input type="hidden" name="my_field" id="my_field_raw">
</form>
<script type="text/javascript">
$("#my_field_formatted").change(function () {
$("#my_field").val($("#my_field_formatted").autoNumeric("get"));
});
</script>
В submit.php
игнорировать значение для my_field_formatted
и вместо этого использовать my_field
.
Ответ 4
Вы всегда можете использовать функцию php str_replace
str_repalce(',','',$stringYouWantToFix);
он удалит все запятые. вы можете придать значение целому числу, если необходимо.
Ответ 5
$("input.classname").autoNumeric('init',{your_options});
$('form').submit(function(){
var form=$(this);
$('form').find('input.classname').each(function(){
var self=$(this);
var v = self.autoNumeric('get');
// self.autoNumeric('destroy');
self.val(v);
});
});
classname - это ваш класс ввода, который будет инициализирован как autoNumeric
Извините за плохой английский ^ _ ^
Ответ 6
Существует еще одно решение для интеграции, которое не мешает вашей проверке на стороне клиента и не вызывает флеш неформатированного текста перед отправкой:
var input = $(selector);
var proxy = document.createElement('input');
proxy.type = 'text';
input.parent().prepend(proxy);
proxy = $(proxy);
proxy.autoNumeric('init', options);
proxy.autoNumeric('set', input.val())''
proxy.change(function () {
input.val(proxy.autoNumeric('get'));
});
Ответ 7
Вы можете использовать метод getArray (http://www.decorplanit.com/plugin/#getArrayAnchor).
$.post("myScript.php", $('#mainFormData').autoNumeric('getArray'));
Ответ 8
Я придумал это, кажется, самый чистый способ. Я знаю, что это довольно старая ветка, но это первый матч Google, так что я оставлю это здесь на будущее
$('form').on('submit', function(){
$('.curr').each(function(){
$(this).autoNumeric('update', {aSign: '', aDec: '.', aSep: ''});;
});
});
Ответ 9
В более новых версиях вы можете использовать опцию:
unformatOnSubmit: true