JQueryプラグインを使用しています AutoNumeric フォームを送信すると、POST
の前のフィールドのフォーマットを削除できません。
$('input').autonumeric('destroy')
(およびその他のメソッド)を使用しようとしましたが、テキストフィールドにフォーマットが残ります。
書式設定されていないデータをサーバーにPOST
するにはどうすればよいですか?書式を削除するにはどうすればよいですか?初期設定または他の場所にその属性がありますか?
シリアル化されたフォームデータを(AJAXを使用して)サーバーに送信したくありません。通常のHTMLアクションのように、フォーマットされていないデータを使用してフォームを送信したいと思います。
私は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;
});
このコードは、autoNumeric値以外のエラー処理を使用してフォームをクリーンアップします。
新しいバージョンでは、次のオプションを使用できます。
unformatOnSubmit: true
データコールバック内では、次のように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) {
}
}
}
}
});
get
メソッドを使用します。
'get' | 「.val()」または「.text()」を介してフォーマットされていないオブジェクトを返します| $(selector).autoNumeric( 'get');
<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
を使用します。
いつでもphpstr_replace
関数を使用できます
str_repalce(',','',$stringYouWantToFix);
すべてのコンマが削除されます。必要に応じて、値を整数にキャストできます。
クライアント側の検証を妨げたり、送信前にフォーマットされていないテキストをフラッシュしたりしない、統合のための別のソリューションがあります。
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'));
});
getArrayメソッド( http://www.decorplanit.com/plugin/#getArrayAnchor )を使用できます。
$.post("myScript.php", $('#mainFormData').autoNumeric('getArray'));
$("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として初期化される入力クラスです英語が悪いのでごめんなさい^ _ ^
私はこれを思いついた、最もきれいな方法のようです。かなり古いスレッドだと知っていますが、これは最初のGoogleの試合なので、将来のためにここに残しておきます
$('form').on('submit', function(){
$('.curr').each(function(){
$(this).autoNumeric('update', {aSign: '', aDec: '.', aSep: ''});;
});
});