私は次のフォームを持っています:
- 発行開始- 2x
input
秒、1 つは時間用、もう 1 つは日付用。 - 発行終了- 2x
input
秒、1 つは時刻用、もう 1 つは日付用。 - 投稿コンテンツ- 1x
textarea
.
日付/時刻の入力はjQuery InputMaskを使用し、textarea はCKEditorを使用します( jQuery Adapterを使用して、ckeditor を$()
andに公開しval()
ます)。
アダプターを使用すると、次のことができます。
$('#idOfTextarea').val()
の代わりに使用CKEDITOR.instances['idOfTextarea'].getData();
$('#idOfTextarea').val('some value')
の代わりに使用CKEDITOR.instances['idOfTextarea'].setData('some value');
問題:
- IE (v9)および Webkits (Chrome v30 & v31、Safari v5.1) :
val()
入力を入力マスクにバインドした瞬間に動作を停止します。 - Firefox (v22)および Opera (v12.16) : 動作し続ける
val()
デモ:
これがフィドルの例です: http://jsfiddle.net/RaphaelDDL/QjVf8/
CKEditor に何かを書き、コンソールでprint ckeditor .val() とコンソールリンクで print ckeditor .getData() の両方でテストします。
上記の入力でバインド入力マスクをクリックし、印刷テストをもう一度クリックします。は
val()
動作を停止しますが、getData
(ネイティブの ck 実装)は動作し続けます。
問題がアダプターにあるのか入力マスクにあるのかわかりませんでした:(
アップデート:
ck adapter と inputmask の両方が$.extend
on になることを発見しました$.fn.val
。$.fn.val
実際に拡張するのではなく、アダプタが動作を停止するブラウザで上書きされているようです(imo、両方の拡張を保持する必要がありましたか?)
$.fn.val
入力マスクの前 (クロム):
function(d) {
if (arguments.length) {
var k = this,
i = [],
f = this.each(function() {
var b = a(this),
c = b.data("ckeditorInstance");
if (b.is("textarea") && c) {
var f = new a.Deferred;
c.setData(d, function() {
f.resolve()
});
i.push(f.promise());
return !0
}
return g.call(b, d)
});
if (i.length) {
var b = new a.Deferred;
a.when.apply(this, i).done(function() {
b.resolveWith(k)
});
return b.promise()
}
return f
}
var f = a(this).eq(0),
c = f.data("ckeditorInstance");
return f.is("textarea") && c ? c.getData() : g.call(f)
}
$.fn.val
入力マスク (クロム) の後:
function() {
var t, i, r;
return arguments.length == 0 ? (t = n(this), t.data("inputmask") ? t.data("inputmask").autoUnmask ? t.inputmask("unmaskedvalue") : (i = n.inputmask.val.apply(t), i != t.data("inputmask")._buffer.join("") ? i : "") : n.inputmask.val.apply(t)) : (r = arguments, this.each(function() {
var t = n(this),
i = n.inputmask.val.apply(t, r);
return t.data("inputmask") && t.triggerHandler("setvalue.inputmask"), i
}))
}
Firefox では$.fn.val
常に同じです (inputmask を呼び出しても変化しません)。
inputmask の拡張を ckeditor とマージする方法はありますか?