knockout.js 템플릿 스크립트를 사용하여 복제 및 삭제할 수있는 양식을 만들었습니다. 바이올린은 here입니다.jquery ui datepicker가있는 Knockout.js는 IE를 제외한 모든 곳에서 작동합니다.
SE에서 litle 도움말을 사용하여 스크립트를 편집하여 jquery-ui datepicker를 추가했습니다. 바이올린의 짧은 버전은 [여기] [2]에서 찾을 수 있습니다. 지금까지는 그렇게 좋았지 만 테스트 할 때 IExplorer (다양한 버전)를 제외한 모든 브라우저에서 모든 것이 작동한다는 것을 알았습니다.
문제는이 특정 부분에 있지만 어디에도 실마리가 없습니다.
script type='text/javascript'>//<![CDATA[
ko.bindingHandlers.datepicker = {
init: function (element, valueAccessor, allBindingsAccessor) {
var options = allBindingsAccessor().datepickerOptions || {};
console.log("datepicker");
$(element).datepicker(options);
//handle the field changing
ko.utils.registerEventHandler(element, "change", function() {
var observable = valueAccessor();
observable($(element).datepicker("getDate"));
});
//handle disposal (if KO removes by the template binding)
ko.utils.domNodeDisposal.addDisposeCallback(element, function() {
$(element).datepicker("destroy");
});
}
};
이제 우리는 그걸 알게되었습니다. 상자 외부를 클릭해도 날짜 표시기가 닫히지 않습니다. 이것은 모든 브라우저에서 발생합니다.
추가 질문
나는이 (그리고 많은 다른 사람) 필드를 자동 수정하는 데 사용합니다. 이 경우 입력을 대문자로 입력하십시오. 이것은 첫 번째 양식에서 우수합니다. 그러나 어떤 중복 양식도 아닙니다.
$ ("hoofdletters.")의 keyup (함수 (E) { $ ("hoofdletters.") 발 (($ ("hoofdletters.") 발())를 toUpperCase())....; }});
uniqueName : true를 사용하면 모든 필드 (복제 된 양식)도 유효성이 검사됩니다. 하지만 내 $ _POST 이름은 모두 바뀌 었습니다. 원래의 필드 이름, 예를 들어 ko_unique_1 대신 year []를 원합니다. uniqueName을 제거 할 때 작동하지만 복제 된 양식이 더 이상 유효성을 검사하지 않습니다.
[2] : http://jsfiddle.net/QUxyy/5/
enter code here
"console.log"명령을 제거하면 올바르게 작동합니다. 어떤 이유로 콘솔은 콘솔이 열려있을 때 (F12)에만 console.log를 허용합니다. – gbs
감사합니다. 대답으로 추가하면 받아 들일 수 있습니다. 나는 지금 upvoted. 당신은 또한 왜 datepicker가 열린 채로 있는지 알고 있습니까? 그리고 어떻게 mm-dd-yyyy 대신 dd-mm-yyyy를 사용할 수 있습니까? – mat
console.log를 window.console.log로 변경하면 코드가 모든 탐색과 호환되며 콘솔을 지원하는 사람들을 위해 콘솔 로깅을 유지합니다. – whosrdaddy