Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Bom dia amigos do fórum Imasters.
Estou com o seguinte problema.
Tenho uma combobox cujo a propriedade onChange executa uma função em javascript.
E eu estou criando outra função em javascript onde eu gostaria de que, ao ser chamada,
executasse a função que está descrita no onChange do meu combo box.
Para vocês entenderem melhor o que faz este script, ao clicar no primeiro combo box
ele lista dados do banco de dados em um combo box que fica abaixo dele. Quando eu
clicar em limpar eu quero que ele volte para opção todos onde o value é vazio e execute
o onChange que esta no mesmo para que a lista que havia sido carregada na combo box
de produto seja esvaziada.
Da forma como estão os scripts funciona perfeitamente no FF.
Porém no IE7 ele não executa a função eval.
Devo subistituir a eval por alguma outra função?
O que estou fazendo de errado?
Alguém pode me dar uma força?
Abaixo vão os códigos de ex:
Formulário
<form name="form1" id="form1" action="teste.php" method="POST">
<select name="teste" id="teste" onChange="listaDados('form1','produto1', this.value)" />
<option value"">Todos</option>
<option value"1">Opcao 1</option>
<option value"2">Opcao 2</option>
</select>
<select name="produto1" id="produto1" /></select>
<input type="button" name="limpar" id="limpar" value="Limpar Campo" onClick="limpaCampos('form1')"
</form>
Função listaDados
function listDados(nForms , produtos , valor ) {
forms = nForms;
produto = produtos;
http.open("GET", "mostraDados.php?id=" + valor, true);
http.onreadystatechange = handleHttpResponse;
http.send(null);
}
function handleHttpResponse() {
form = document.getElementById(forms);
campo_select = form.elements[produto];
if (http.readyState == 4) {
campo_select.options.length = 0;
results = http.responseText.split(";");
for( i = 0; i < (results.length - 1); i++ ) {
string = results[i].split( "|" );
campo_select.options[i] = new Option( string[0], string[1] );
}
}
}
function getHTTPObject() {
var req;
try {
if (window.XMLHttpRequest) {
req = new XMLHttpRequest();
if (req.readyState == null) {
req.readyState = 1;
req.addEventListener("load", function () {
req.readyState = 4;
if (typeof req.onReadyStateChange == "function") req.onReadyStateChange();
}, false);
}
return req;
}
if (window.ActiveXObject) {
var prefixes = ["MSXML2", "Microsoft", "MSXML", "MSXML3"];
for (var i = 0; i < prefixes.length; i++) {
try {
req = new ActiveXObject(prefixes[i] + ".XmlHttp");
return req;
} catch (ex) {};
}
}
} catch (ex) {}
alert("XmlHttp Objects not supported by client browser");
}
var http = getHTTPObject();
Função para executar o listaDados sem clicar na combo box
function limpaCampos(formL){
var formId = document.getElementById(formL);
var elementoForm = formId.elements;
for(var i = 0; i < elementoForm.length; i++){
var tmpElement = elementoForm[i];
if(tmpElement != undefined){
var tmpChange = tmpElement.getAttribute("onChange");
if(tmpElement.type == 'checkbox'){
tmpElement.checked = false;
}else if(tmpElement.type != 'hidden' && tmpElement.type != 'button' && tmpElement.type != 'submit' && tmpElement.name != 'search'){
tmpElement.value = '';
}
if(tmpChange != null && tmpChange != undefined){
eval(tmpChange);
}
}
}
}
Agradeço desde já a atenção de todos.Carregando comentários...