Estou com um probleminha aqui... não sei ao certo o que está acontecendo, mas aparentemente, meu script tá me zuando.
Eu criei um script que manipula checkboxes, usando imagens ao invés daquela caixinha feia, tosca e ridícula.
Ei-lo:
/*******************************************************************************
* Dynamic Checkboxes v 1.1 *
*******************************************************************************
* Author: Guilherme Augusto Blanco *
* MSN: guilhermeblanco@hotmail.com *
* ICQ: 33288081 *
*******************************************************************************
* GPL - The GNU General Public License http://www.gnu.org/licenses/gpl.txt *
* Permits anyone the right to use and modify the software without limitations *
* as long as proper credits are given and the original and modified source *
* code are included. Requires that the final product, software derivate from *
* the original source or any software utilizing a GPL component, such as *
* this, is also licensed under the GPL license. *
*******************************************************************************
* 11-30-2003: Added text click selection support *
* 11-16-2003: Version 1.0 released *
*******************************************************************************
* Last modifyed: 11-30-2003 *
*******************************************************************************/
/* Basic Configuration */
dCheckBox.unselected = new Image(16, 16);
dCheckBox.unselected.src = "system/img/unchecked.gif";
dCheckBox.selected = new Image(16, 16);
dCheckBox.selected.src = "system/img/checked.gif";
/* Auxiliar properties */
dCheckBox.all = {};
dCheckBox.objCounter = 0;
/* Constructor */
function dCheckBox( sMethod, sHint ) {
this.id = "dotcom-radio-object-"+ dCheckBox.objCounter++;
this.method = sMethod;
this.hint = (sHint)? sHint: "";
this.write();
// Adding event handlers to the button
var oThis = this;
document.getElementById( this.id ).onclick = function ( ) { oThis.click( ); }
dCheckBox.all[ this.id ] = this;
}
/* Constructor functions */
dCheckBox.prototype.write = function ( ) {
str = "<input id=\"frm_" + this.id + "\" type=\"checkbox\" value=\"y\" name=\"" + this.method + "\" style=\"visibility: hidden; display: none;\">";
str += "<img id=\"" + this.id + "\" src=\"" + dCheckBox.unselected.src + "\" style=\"width: 16px; height: 16px; margin: 2px; vertical-align: middle;\" alt=\""+ this.hint +"\">";
document.write(str);
}
/* Instance event handlers */
dCheckBox.prototype.onclick = function ( ) { }
dCheckBox.prototype.click = function ( ) {
if ( document.getElementById( "frm_" + this.id ).checked == true ) {
document.getElementById( this.id ).src = dCheckBox.unselected.src;
document.getElementById( "frm_" + this.id ).checked = false;
} else {
document.getElementById( this.id ).src = dCheckBox.selected.src;
document.getElementById( "frm_" + this.id ).checked = true;
}
if (typeof this.onclick == "function")
this.onclick();
}
dCheckBox.prototype.select = function ( ) {
document.getElementById( this.id ).src = dCheckBox.selected.src;
document.getElementById( "frm_" + this.id ).checked = true;
}
dCheckBox.prototype.deSelect = function ( ) {
document.getElementById( this.id ).src = dCheckBox.unselected.src;
document.getElementById( "frm_" + this.id ).checked = false;
}
dCheckBox.prototype.getSelected = function ( ) {
return document.getElementById( "frm_" + this.id ).checked;
}
dCheckBox.prototype.getElement = function ( ) {
return document.getElementById( "frm_" + this.id );
}
dCheckBox.prototype.toString = function ( ) {
return "[object dCheckBox]";
}
Até aí, ele está funcionando normalmente... estou utilizando-o para criar um gerenciador de arquivos.
Nele, está cotido uma janela dinâmica de CHMOD, na qual integra-se 9 destes checkboxes e 1 input do tipo text.
Basicamente, a cada alteração do input, eu tenho que analisar o seu conteúdo e selecionar/deselecionar os checkboxes devidos.
Então, tenho isto aqui:
function checkChmodNumber() {
var oEvent = window.event;
if (!oEvent) return true;
else {
var key = oEvent.keyCode;
if ((key >= 48 && key <= 55) || (key >= 96 && key <= 103))
return true;
}
return false;
}
function updateCheckboxes() {
var oElOctal = document.getElementById("file-chmod-new");
var sChmod = oElOctal.value;
var iValue;
for (i = 0; i < 3; i++) {
iValue = parseInt(sChmod.charAt(i));
if (iValue > 7) iValue = 7;
if (iValue % 2 != 0)
chmod[(3 * i + 3)].select();
if ((iValue < 4 && iValue > 1) || iValue >= 6)
chmod[(3 * i + 2)].select();
if (iValue >= 4)
chmod[(3 * i + 1)].select();
}
}
E para o onclick dos objectos dCheckbox:
function updateChmodOctal(oElCheckbox) {
alert(oElCheckbox.method);
var oElOctal = document.getElementById("file-chmod-new");
var iChmod = parseInt(oElOctal.value);
var iItem = parseInt(oElCheckbox.method);
var iMultiplier = 1;
if (iItem > 3 && iItem <= 6) iMultiplier *= 10;
else if (iItem <= 3) iMultiplier *= 100;
var iChmodValue;
switch (iItem % 3) {
case 0: iChmodValue = 1; break;
case 1: iChmodValue = 4; break;
case 2: iChmodValue = 2; break;
}
alert(iChmodValue);
if (oElCheckbox.getSelected())
iChmod += (iChmodValue * iMultiplier);
else iChmod -= (iChmodValue * iMultiplier);
oElOctal.value = iChmod;
}
Aparentemente, ele está obtendo o mesmo name para todos os checkboxes... quando na realidade, eles deveriam pegar o primeiro argumento do construtor do objeto.
Depois disto... se conseguirem resolver, veremos qual será o próximo bug...
Esta até que não é tão complicada... provavelmente podemos resolver isto por aqui. Estarei tentando, online no MSN... se alguém quiser entrar em contato...
Pergunta
lmf.php
Olá gente...
Estou com um probleminha aqui... não sei ao certo o que está acontecendo, mas aparentemente, meu script tá me zuando.
Eu criei um script que manipula checkboxes, usando imagens ao invés daquela caixinha feia, tosca e ridícula.
Ei-lo:
Até aí, ele está funcionando normalmente... estou utilizando-o para criar um gerenciador de arquivos. Nele, está cotido uma janela dinâmica de CHMOD, na qual integra-se 9 destes checkboxes e 1 input do tipo text. Basicamente, a cada alteração do input, eu tenho que analisar o seu conteúdo e selecionar/deselecionar os checkboxes devidos. Então, tenho isto aqui: E, para o evento onchange do input text: E para o onclick dos objectos dCheckbox:Aparentemente, ele está obtendo o mesmo name para todos os checkboxes... quando na realidade, eles deveriam pegar o primeiro argumento do construtor do objeto.
Depois disto... se conseguirem resolver, veremos qual será o próximo bug...
Esta até que não é tão complicada... provavelmente podemos resolver isto por aqui. Estarei tentando, online no MSN... se alguém quiser entrar em contato...
===
OBS: Post feito pelo meu colega Guilherme Blanco
Link para o comentário
Compartilhar em outros sites
3 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.