Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Ola. Eu tenho um array com valores dinâmicos, esse valor é acrescentado a cada vez que o botão 'Adicionar Update'(que cria uma nova **div **com um **progress bar** referente ao **input file** da **div**) é usado. Cada **div **de update é identificada desta forma: **fr-arquivos0**,** fr-arquivos1**, **fr-arquivos2** ... Quando clicar no botão submit quero que todas as **divs **de update sejam verificadas se o processo de update de cada uma foi concluída(**100%**).
Exemplo:
// OS VALORES DA VARIAVEL SÃO SOMENTE UM EXEMPLO POIS NA REALIDADE ELES SAO COLOCADOS DE FORMA DINAMICA
var verarray = [];
verarray = [0, 1, 2, 3];
$.each( verarray, function( nome, valor ){
if( $('form[id=fr-arquivos'+valor+'] .progress-meter-text').text() == '100%' ) {
alert('Todos updates foram Completos...');
}
});
Obrigado pela atenção.Desculpe pela confusão na explicação. Na verdade não se trata de uma Div e sim de um Form. E o progress bar é html(é de um framework chamado Foundation Zurb: http://foundation.zurb.com/sites/docs/progress-bar.html):
<div class=".padding-none progress" role="progressbar" tabindex="0" aria-valuenow="50" aria-valuemin="0" aria-valuetext="50 percent" aria-valuemax="100">
<span class="progress-meter" style="width: 0%">
<p class="progress-meter-text"></p>
</span>
</div>Agora você diz que se trata de um FORM:
" Desculpe pela confusão na explicação. Na verdade não se trata de uma Div e sim de um Form."
e mostra um DIV:
<div class=".padding-none progress" role="progressbar"
FORM ou DIV ?
class = ".padding-none progress" .padding-none? (tem um ponto no início do nome da classe???)
Sim. Todos os progress bar que são criados são envolvidos por um form e identificados assim: fr-arquivos0, fr-arquivos1, fr-arquivos2 .
Exemplo:
<form action="post" class="form-arquivos" id="fr-arquivos0" enctype="multipart/form-data">
<div class=".padding-none progress" role="progressbar" tabindex="0" aria-valuenow="50" aria-valuemin="0" aria-valuetext="50 percent" aria-valuemax="100">
<span class="progress-meter" style="width: 0%">
<p class="progress-meter-text"></p>
</span>
</div>
</form>
<form action="post" class="form-arquivos" id="fr-arquivos1" enctype="multipart/form-data">
<div class=".padding-none progress" role="progressbar" tabindex="0" aria-valuenow="50" aria-valuemin="0" aria-valuetext="50 percent" aria-valuemax="100">
<span class="progress-meter" style="width: 0%">
<p class="progress-meter-text"></p>
</span>
</div>
</form>
<form action="post" class="form-arquivos" id="fr-arquivos2" enctype="multipart/form-data">
<div class=".padding-none progress" role="progressbar" tabindex="0" aria-valuenow="50" aria-valuemin="0" aria-valuetext="50 percent" aria-valuemax="100">
<span class="progress-meter" style="width: 0%">
<p class="progress-meter-text"></p>
</span>
</div>
</form>Oi Lucas,
No seu script se um dos updates for concluído o alert será disparado dando um FALSO POSITIVO.
Para corrigir criei uma variável para armazenar a quantidades de FORMS e outra para contar os FORMS com 100% dentro do FOR (em lugar do $each)
Compare as duas variáveis e se forem iguais TODOS os updates estarão concluídos.
Como mostrado a seguir:
<script type="text/javascript">
var qdeForms = $( 'form[id^="fr-arquivos"]' ).length;
var count = 0;
for (i=0; i<qdeForms; i++) {
if( $('form[id=fr-arquivos'+ i +'] .progress-meter-text').text() == '100%' ) {
count++;
}
}
if (qdeForms == count) {alert('Todos updates foram Completos...');}
</script>Acabei de testar, porem o FOR não funcionou e não entendi porque. Entretanto com a sua resposta consegui elaborar outra forma que chegou ao mesmo resultado colocando uma classe em cada div em que o update foi concluído e depois verificando se o numero de classes concluídas era igual ao numero de forms. Agradeço muito sua ajuda Sr. Maujor.
Você copiou e colou meu script?
Se não talvez tenha cometido algum engano na sintaxe, porque eu testei aqui e FUNCIONOU.
Note com cuidado essa sintaxe:
$( 'form[id^="fr-arquivos"]'
Eu verifiquei o código, e a sintaxe esta exatamente como você acabou de citar. O problema é que se eu colocava o código solto ele não funcionava, então coloquei em uma função que era disparada ao clicar no botão <a>('Inserir Updates'), porem ele só funcionava a parte do código que fazia a contagem dos forms, eu coloquei um alert dentro do for e não disparava. Ele só disparava o alert quando eu clicava no botão de 'Inserir Updates' após selecionar um arquivo e ter completado o update, então eu selecionava outro arquivo(sem atualizar a pagina) e clicava novamente no botão 'Inserir Updates'. Sinceramente eu também não entendi o porque de não funcionar, mas se possível, poderia me passar o seu código de teste completo para que eu possa ver se entendo porque no meu script não funciona?
Retirado
Olá @lucas70770
Por favor esclareça o seguinte:
1-) Você cita: "cada DIV de update...." e no código mostra:
form[id=fr-arquivos'+valor+']
Afinal é DIV ou FORM?
2-) Existem vários tipos de progressbar, tais como: widget da jQueryUI, elemento PRGRESSBAR da HTML5 e outros.
Qual deles você está usando?
3-) O que é?
progress-meter-text').text()