As imagems b0.png, b1.png e b2.png medem 13x13 px² e representam os checkboxes:
desmarcado
semi-marcado
marcado
Uma de minhas estratégias para desenvolvimentos de componentes para formulários é manter um padrão para todos. Motivo: Facilitar o desenvolvimento de códigos recursivos como por exemplo os necessários à pegar ou setar os valores dos componentes. Exemplo de métodos e variaveis padrões que poderemos encontrar futuramente:
setOptions(): insere as opções basicas do componente
trigger(): função que é executada quando ocorre mudança de valor
getValue: retorna valor
setValue():atualiza valor
reset(): coloca valor em estado default
setEnabledTo(): seta o componente para um dos modos: seleção, edição ou inserção.
validate(): se diferente de nulo, toda vez que ocorrer tentativa de alteração de valor, esse validade acusa se o novo valor é aceitavel ou não. retorna um valor booleano.
mascara: String de formatação do campo. Exemplo com telefone: (##) ####-####
Futuramente deixaremos este componente um pouco mais complexo.
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <script type="text/javascript"> stateBox = function () { var div = document.createElement("div"); div.style.background="#00ffff" div.style.position="absolute"; div.style.top="0px"; div.style.left="0px"; div.style.width="13px"; div.style.height="13px"; div.disabled=false div.isTristate=false div.value = false div.style.backgroundImage = "url('b0.png')"; div.setValue = function (valuev) { if( valuev == false ) { this.value = false this.style.backgroundImage = "url('b0.png')"; } else if( valuev == true ) { this.value = true this.style.backgroundImage = "url('b2.png')"; } else { this.value = null this.style.backgroundImage = "url('b1.png')"; } } div.getValue = function () { return this.value; } div.onclick = function() { if(!this.disabled) { if(this.isTristate) { if( this.value == true ) { this.value = false this.style.backgroundImage = "url('b0.png')"; } else if( this.value == false ) { this.value = null this.style.backgroundImage = "url('b1.png')"; } else { this.value = true this.style.backgroundImage = "url('b2.png')"; } } else { if( this.value == false ) { this.value = true this.style.backgroundImage = "url('b2.png')"; } else { this.value = false this.style.backgroundImage = "url('b0.png')"; } } } } return div; } function load() { var div = document.getElementById("div"); chb = stateBox(); chb.isTristate=true chb.setValue(null) div.appendChild( chb ) ; } </script> </head> <body onload="load()"> <div id="div"></div> </body> </html>
Nenhum comentário:
Postar um comentário