私は独自のJquery月ピッカーコントロールを作成しました。月のピッカーは<div />
の中に座っています。これは、私がそれを呼び出すフィールド<input />
に添付する必要があります。明確にするためにJquery append()は閉じタグなしの入力では機能しません
、ここではコードです:あなたは私のコードから気付いたよう
(function ($) {
//dict has to be a serialized dictionary. The dictionary needs to have years (as numbers) as keys and for each year a list of numbers representing the months.
//Only the provided years/month will be serialized as html.
//Sample usage (Razor):
//var json = @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model.Periods.ToArray()));
//$('#monthPicker').CondatoMonthPicker(json);
$.fn.CustomMonthPicker = function (dict) {
debugger;
//Construct HTML
var wrapper = $(this);
$monthPickerHeaderHtml = $('some html...');
wrapper.append($monthPickerHeaderHtml);
};
})(jQuery);
が、私はMVCかみそりを使用しています。したがって、私は、日付ピッカーを保持するフィールドをインスタンス化するためにこれを使用します。
<input autocomplete="off" class="ms-TextField-field" data-val="true" data-val-date="The field TimePeriod must be a date." data-val-required="The TimePeriod field is required." id="custom-datepicker" name="TimePeriod" type="date">
お知らせ欠落終了タグ:
@Html.TextBoxFor(model => model.TimePeriod, new { @id = "custom-datepicker", @type = "date", @class = "ms-TextField-field" })
しかし、これは、次のHTMLを生成します。それは実際には、あなたが見ることができるように代わりに私のカスタムHTMLを追加すると、
:私は私のラッパー(<div />
)オブジェクトに.append()
を使用する場合、それは以下の出力に含まHTMLを吐き出す、戻って私のカスタム日付ピッカー機能へ行きますそれを挿入して、末尾に</input>
タグを追加して、私の全体の構成が私のページに表示されないようにします。なぜこのことが起こっているのか、どのように対処するのか誰にも分かりません。
EDIT:私は私の表現を十分に明確にしていないと思います。私は<input>
フィールドの値を設定したくありません。どういうわけか、jQueryのは、入力要素を取得し、私のhtmlを挿入し、それは本当に最初の終了タグを追加し、それは次のようになりますので、その終了タグの後に私のカスタムHTMLを追加する必要があるときに終了し、その後に終了タグを追加します。
<input ...></input>
My custom html...
[ 'input'仕様]を参照してください(https://www.w3.org/TR/html5/forms.html#the-入力要素)。 'input'タグは終了タグを持つことができません(XHTMLを除いて' 'のような短い終了タグであっても技術的に間違っています)。また、要素を 'input'タグ内に埋め込むことはできません(ただし、'
また、問題を示すhttp://jsfiddle.netの動作例を作成してください(私たちが誤解した場合など)。 –
あなたのedit: 'input'要素には、HTMLに終了タグがありません。完全停止。以下は[Chromeの '$ .append()'操作の例です(https://jsfiddle.net/qj07su51/): '