2012-10-17 3 views
0

이 코드입니다.을 DateTimePicker 및 Backbone.View 상호 작용

console.log 출력을 사용하여 DTP를 클릭 할 때 'change input'이 트리거되고 기본값 (MM-DD 00:00)이 할당 된 것처럼 보입니다. 기본값과 다른 날짜/시간 값을 선택하는 경우에도 입력 상자 (두 번째 시간)를 클릭 한 다음 올바른 값이 할당되지 않으면 '입력 변경'이 다시 트리거되지 않습니다. 사용자 친화적이지 않습니다.

그래서 나는 단지 mouseout에 값을 할당 할 생각이었습니다.이 값은 date/time 값을 선택하기 시작할 때 mouseout이 발생하기 때문에 작동하지 않았습니다. 나는 또한 흐릿 해 보였고, 그것도 작동하지 않았다.

어디로 잘못 가고 있습니까?

편집 : 다음은 jQuery를 UI의 CSS에 의해 넘어지고있는 것처럼 http://jsfiddle.net/9gSUe/1/

+0

변경 이벤트는 ''이 (가) 포커스를 잃을 때까지 트리거되지 않으며 [HTML 사양도 그렇게 말합니다] (http://stackoverflow.com/a/10579168/479863). 그게 무슨 소리 야? 그렇다면 사용할 수있는 datetimepicker에서 적절한 이벤트가 있어야합니다. –

+0

필자가 관찰 한 것부터 datetimepicker는 원하는 날짜/시간 값을 선택하기 전에 포커스를 잃습니다. datetimepicker에 대한 이벤트를 살펴 보겠습니다. 링크 주셔서 감사합니다. – fbynite

+0

그러나 값이 변경된 후에 * 초점을 잃을 필요가 있습니다. jsfiddle.net 또는 jsbin.com에서 데모를 설정하여 어떤 일이 일어나는지 쉽게 확인할 수 있습니까? –

답변

1

가 보이는 내 문제를 설명하는 jsfiddle.net 링크입니다. datepicker를 <input>에 바인딩하면 jQuery UI는 hasDatepicker 클래스를 <input> 클래스에 추가합니다. <input>

var cls = $(e.currentTarget).attr('class'); 

cls'std hasDatepicker'을 얻을 : 그럼 당신은이 작업을 수행.

class이 너무 많아서 변경하려는 속성을 식별하기 위해 다른 것을 사용하는 것이 좋습니다.

<!-- HTML --> 
<input id="std" class="std" ...> 

// JavaScript 
var cls = e.currentTarget.id; 

또는 name 속성 :

<!-- HTML --> 
<input name="std" class="std" ...> 

// JavaScript 
var cls = $(e.currentTarget).attr('name'); 

혹은 심지어 HTML5의 데이터 속성 :

<!-- HTML --> 
<input class="std" data-attr="std" ...> 

// JavaScript 
var cls = $(e.currentTarget).data('attr'); 

내가 name 생각이 있다면 당신은 하나의 stdid를 사용할 수 있습니다 속성이 가장 자연 스럽습니다 : http://jsfiddle.net/ambiguous/RRKVJ/

,

그리고 몇 측 문제 :

  • 귀하의 바이올린 여러 jQuery를 버전하고는 일반적으로 좋은 생각이 포함되었다.
  • set에 대한 개체를 만들 필요가 없으며 하나의 속성 만 설정하는 경우에는 단지 m.set(attr, value)이라고 말할 수 있습니다.
  • 보기에는 $(this.el)이 필요하지 않습니다. 최신 백본에는 this.$el이 이미 캐시되어 있습니다.
  • console.log은 복수 인수를 처리 할 수 ​​있으므로 +을 등 뒤에서 줄 이도록 지정하지 않으려면 console.log('Std: ' + attrs.std + ' Pod: ' + attrs.pod + ' Poa: ' + attrs.poa); 대신 console.log('Std: ', attrs.std, ' Pod: ', attrs.pod, ' Poa: ', attrs.poa);을 말하십시오.
+0

그것은 작동합니다! 시간과 노력에 감사드립니다. 감사. – fbynite