私はdropzoneの登録フォームを持っており、プラグインを使ってフィールド(フィールド)を検証したいと思います。私はこのプラグインをdropzone initの中で呼び出し、その関数のコールバックの中で私はdropzoneキューを処理し、フォームデータを添付します。dropzone - varこれは、別の関数のコールバック内の最初のクリックでは機能しません(xhr formdata)
問題が初めて私は<a id="click">Send</a>
ボタンをクリックし、ということで、何も起こりません:それはちょうど、関数のコールバックに入り、(myDropzone
が動作していない)何もしない、唯一の(私はデバッグのために置くこと)console.log()
。
(function($) {
$.fn.formly = function(callback) {
$('a#click').on('click', function() {
if (callback) {
var clientInfo = form.find(':input').serializeArray();
clientInfo.splice(-1, 1);
clientInfo.splice(-1, 1);
// Password hash function
var p = $('#reg_pwd').val(),
c = $('#confirm_pwd').val(),
shaObj = new jsSHA('SHA-512', 'TEXT');
shaObj.update(p);
var p_hash = shaObj.getHash("HEX"),
shaObj = new jsSHA('SHA-512', 'TEXT');
shaObj.update(c);
var c_hash = shaObj.getHash("HEX");
callback(clientInfo, p_hash, c_hash);
}
});
};
})(jQuery);
そして、これがドロップゾーンのINITです:
init: function() {
var myDropzone = this;
$('#register').formly(function(clientInfo, p_hash, c_hash) {
console.log(myDropzone);
myDropzone.processQueue();
myDropzone.on('sending', function(data, xhr, formData) {
formData.append('client_info', JSON.stringify(clientInfo)),
formData.append('particular', 0),
formData.append('reg_pwd', p_hash),
formData.append('confirm_pwd', c_hash)
});
});
myDropzone.on('success', function(file, response) {
myDropzone.removeFile(file);
console.log('Error: ' + response);
});
}
私は、コンソールにログインしたオブジェクトを参照することができ
これは私が使用しているプラグインです。
ボタンを最初にクリックすると、サーバーに何も送信されません(xhr要求なし)。
「送信」をクリックすると(xhr要求を送信します)、サーバー応答(myDropzone.on('success'
)が表示されます。
なぜ初めて動作しますか?私は間違って何をしていますか?これをどのように修正できますか?
送信時にのみ呼び出される関数内でフォームの検証をトリガーするイベントリスナーを作成し、これがボタンが押された後に発生するため、最初は機能しません。最初にイベントリスナーがクリックされていない場合は、この最初のクリックで作成され、その後のクリックでも動作します。 – wallek876
'on '(' sending ')'の中の唯一のコードは、私が画像に添付しようとしているフォームデータです( 'formData.append'で始まる4行です。 –
さて、私は、dropzoneはinitの内部で何を聴いているのか、関数のコールバックではないのかを聞いているので、最初に 'on '(' sending ')を実行すると、 'はコールバックの内側にあり、dropzoneは分かりませんが、もう一度"ちょっと知っています "... –