Fórum para dúvidas sobre JavaScript, ECMAScript, AJAX, XML e jQuery.
Moderador: web
por web Offline » Ter Jul 03, 2007 5:30 pm
|
Esse é um script para adicionar uma quantidade de input file no form a cada click, o name do input file está em array ( arquivo[] ) para melhor manipulação dos dados com PHP.
<script>
function cria(quantos) {
for(var i=0; i < quantos; i++) {
// cria o input
novo = document.createElement('input');
// define o tipo do input
novo.setAttribute('type', 'file');
// define o name do input
novo.setAttribute('name', 'arquivo[]');
// input criado
document.getElementById('campos').appendChild(novo);
}
}
</script>
<form action="" method="GET">
<input type="file" name="arquivo[]">
<!-- id é o número de inputs a ser criado //-->
<input type="button" value="adicionar campos" id="3" onclick="cria(this.id)">
<div id="campos" style="width:100px;"></div>
<input type="submit">
</form>

Gostou do que encontrou? Divulgue, indique, participe, agradeça pelas respostas.
Faço scripts personalizados ou reparos em scripts. Orçamento MSN codigosnaweb1 [@] gmail [.] com
web
ADMIN
Mensagens: 12407
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil
|
por JP.BattleKilL Offline » Ter Nov 22, 2011 3:47 pm
ta eu fiz algumas alterações no script para oque eu necessitava
- Código: Selecionar todos
<script> function cria(quantos) {
for(var i=0; i < quantos; i++) {
// cria o input novo = document.createElement('input');
// define o tipo do input novo.setAttribute('type', 'text');
// define o name do input novo.setAttribute('name', 'opcao1');
// input criado document.getElementById('campos').appendChild(novo); }
} </script>
<form action="" method="GET">
<input type="text" name="opcao1">
<!-- id é o número de inputs a ser criado //--> <input type="button" value="adicionar campos" id="1" onclick="cria(this.id)">
<div id="campos" style="width:100px;"></div> <input type="submit">
</form>
so que agora eu presiso limitar a quantidade tipo quando atingir 8 opçao ele desabilitar o botao. e o name mudar de opçao 1 para 2 3 4 e assim susivamente. o pq disso! pq cada opçcao vai em uma coluna na tabela se o nome for o memso vai repetir a mesma coisa en todas entende. fico no aguardo se puder me ajudar!!!

JP.BattleKilL
VETERANO
Mensagens: 170
Registrado em: Seg Set 12, 2011 11:53 am
Localização: Bahia Luis Eduardo Magalhães
|
por web Offline » Ter Nov 22, 2011 3:58 pm
Seria isso?
- Código: Selecionar todos
<script> var qt = 0; function cria(quantos) { for(var i=0; i < quantos; i++) { // cria o input novo = document.createElement('input'); // define o tipo do input novo.setAttribute('type', 'text'); // define o name do input novo.setAttribute('name', qt); // aqui vai o número que será incrementado, 1, 2, etc... // input criado document.getElementById('campos').appendChild(novo); qt++; } if(qt >= 7) { // 7 porque um input já vem criado document.getElementById('1').disabled='true'; } } </script>
<form action="" method="GET"> <input type="text" name="opcao1"> <!-- id é o número de inputs a ser criado //--> <input type="button" value="adicionar campos" id="1" onclick="cria(this.id)"> <div id="campos" style="width:100px;"></div> <input type="submit"> </form>

Gostou do que encontrou? Divulgue, indique, participe, agradeça pelas respostas.
Faço scripts personalizados ou reparos em scripts. Orçamento MSN codigosnaweb1 [@] gmail [.] com
web
ADMIN
Mensagens: 12407
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil
|
por JP.BattleKilL Offline » Ter Nov 22, 2011 4:54 pm
estou tentand usa o foreach para pegar o valor so que nao esta indo oque estou fazendo de errado nesse codigo. sera que poderia me ajudar????
- Código: Selecionar todos
<script> var qt = 0; function cria(quantos) { for(var i=0; i < quantos; i++) { // cria o input novo = document.createElement('input'); // define o tipo do input novo.setAttribute('type', 'text'); // define o name do input novo.setAttribute('name', qt); // aqui vai o número que será incrementado, 1, 2, etc... // input criado document.getElementById('campos').appendChild(novo); qt++; } if(qt >= 7) { // 7 porque um input já vem criado document.getElementById('1').disabled='true'; } } </script>
<form action="" method="post" enctype="multipart/form-data"> <input type="text" name="opcao[]"> <!-- id é o número de inputs a ser criado //--> <input type="button" value="adicionar campos" id="1" onclick="cria(this.id)"> <div id="campos" style="width:100px;"></div> <input type="submit" id="submit" name="submit"> </form>
<? if(isset($_POST['submit'])){ extract($_POST); foreach(array($opcao) as $info1) for($i = 0; $i < count($info1); $i++) { echo $info1[$i];}

JP.BattleKilL
VETERANO
Mensagens: 170
Registrado em: Seg Set 12, 2011 11:53 am
Localização: Bahia Luis Eduardo Magalhães
|
por web Offline » Ter Nov 22, 2011 5:10 pm
Para usar o foreach, você precisa se basear nesse script
Enviar-varios-array-pelo-formulario_1_4645.html
Observe no script o name valor[]
Esse script que recomendei aqui vai seguir essa regra
novo.setAttribute('name', 'valor[]');

Gostou do que encontrou? Divulgue, indique, participe, agradeça pelas respostas.
Faço scripts personalizados ou reparos em scripts. Orçamento MSN codigosnaweb1 [@] gmail [.] com
web
ADMIN
Mensagens: 12407
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil
|
por JP.BattleKilL Offline » Ter Nov 22, 2011 5:46 pm
- Código: Selecionar todos
<script> var qt = 0; function cria(quantos) { for(var i=0; i < quantos; i++) { // cria o input novo = document.createElement('input'); // define o tipo do input novo.setAttribute('type', 'text'); // define o name do input novo.setAttribute('value', qt); // aqui vai o número que será incrementado, 1, 2, etc... // input criado document.getElementById('campos').appendChild(novo); qt++; } if(qt >= 7) { // 7 porque um input já vem criado document.getElementById('1').disabled='true'; } } </script>
<form action="" method="post" enctype="multipart/form-data"> <input type="text" name="valor[]" value=""> <!-- id é o número de inputs a ser criado //--> <input type="button" value="adicionar campos" id="1" onclick="cria(this.id)"> <div id="campos" style="width:100px;"></div> <input type="submit" id="submit" name="submit"> </form>
<? if(isset($_POST['submit'])){ extract($_POST); foreach(array($valor) as $info1)
for($i = 0; $i < count($info1); $i++) { echo $info1[$i]; }} ?>
obeserver o meu codigo eu fiz uma mudança ao inves de colocar em name o valor do script eu coloquei em value para ver qoue vem do script correto! ai eu percebi o seguinte que o campo que ja vem gerado ele vem vazio, mas quando eu clico ele abre um campo com o que vem do script 0 1 2 3 4 5 6 que forma os 7 campos o 8 que seria o primeiro vem sem nd. agora me pergunto pq nao vem o resultado ali em baixo tipo se eu colocar um numero no que vem vazio ele me tras o numero na resposta ali embaixo. so que oque estou achando, que quando o campo e gerado o name e gerado em branco somente com o numero do scrpit.. e agora faço oque?????

JP.BattleKilL
VETERANO
Mensagens: 170
Registrado em: Seg Set 12, 2011 11:53 am
Localização: Bahia Luis Eduardo Magalhães
|
por JP.BattleKilL Offline » Ter Nov 22, 2011 5:55 pm
pq e o seeguinte quando ele o script gera um campo novo ele gera assim novo.setAttribute('name', qt); ele gera com o numero somente 1 2 3 456 um desestes e nao gera com o valor[]. ja tentei fazer valor[qt];
so que nao vai tem alguma ideia de como fazer isso ????

JP.BattleKilL
VETERANO
Mensagens: 170
Registrado em: Seg Set 12, 2011 11:53 am
Localização: Bahia Luis Eduardo Magalhães
|
por web Offline » Ter Nov 22, 2011 5:58 pm
Você tem que adicionar o atributo name para os inputs que são gerados
novo.setAttribute('name', 'valor[]');

Gostou do que encontrou? Divulgue, indique, participe, agradeça pelas respostas.
Faço scripts personalizados ou reparos em scripts. Orçamento MSN codigosnaweb1 [@] gmail [.] com
web
ADMIN
Mensagens: 12407
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil
|
por JP.BattleKilL Offline » Ter Nov 22, 2011 6:37 pm
mas e o qt vai ir onde? pq eu presiso de diferenciamento nos campos????

JP.BattleKilL
VETERANO
Mensagens: 170
Registrado em: Seg Set 12, 2011 11:53 am
Localização: Bahia Luis Eduardo Magalhães
|
por web Offline » Ter Nov 22, 2011 7:08 pm
Pensei que era para se basear no valor, e não no name do input. Se quer usar o name, você vai ter que criar uma variável para cada input qt

Gostou do que encontrou? Divulgue, indique, participe, agradeça pelas respostas.
Faço scripts personalizados ou reparos em scripts. Orçamento MSN codigosnaweb1 [@] gmail [.] com
web
ADMIN
Mensagens: 12407
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil
|
por JP.BattleKilL Offline » Ter Nov 22, 2011 9:11 pm
poderia me dar um exemplo de como fazer isso????

JP.BattleKilL
VETERANO
Mensagens: 170
Registrado em: Seg Set 12, 2011 11:53 am
Localização: Bahia Luis Eduardo Magalhães
|
por web Offline » Ter Nov 22, 2011 9:53 pm
Você quer obter o name do input ou os valores?

Gostou do que encontrou? Divulgue, indique, participe, agradeça pelas respostas.
Faço scripts personalizados ou reparos em scripts. Orçamento MSN codigosnaweb1 [@] gmail [.] com
web
ADMIN
Mensagens: 12407
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil
|
por JP.BattleKilL Offline » Ter Nov 22, 2011 10:26 pm
quero oberter pelo foreach so que para isso presiso do nome exemplo valor[]. presiso de numeros diferenciados e kd vez que clicar no botao ele abrir mas 1 texfield.
presiso de numeros diferenciados e do nome "valo[]"
- Código: Selecionar todos
<script> var qt = 0; function cria(quantos) { for(var i=0; i < quantos; i++) { // cria o input novo = document.createElement('input'); // define o tipo do input novo.setAttribute('type', 'text'); // define o name do input novo.setAttribute('name', qt); // aqui vai o número que será incrementado, 1, 2, etc... // input criado document.getElementById('campos').appendChild(novo); qt++; } if(qt >= 7) { // 7 porque um input já vem criado document.getElementById('1').disabled='true'; } } </script>
<form action="" method="post" enctype="multipart/form-data"> <input type="text" name="valor[]" value=""> <!-- id é o número de inputs a ser criado //--> <input type="button" value="adicionar campos" id="1" onclick="cria(this.id)"> <div id="campos" style="width:100px;"></div> <input type="submit" id="submit" name="submit"> </form>
<? if(isset($_POST['submit'])){ extract($_POST); foreach(array($valor) as $info1)
for($i = 0; $i < count($info1); $i++) { echo $info1[$i]; }}?>

JP.BattleKilL
VETERANO
Mensagens: 170
Registrado em: Seg Set 12, 2011 11:53 am
Localização: Bahia Luis Eduardo Magalhães
|
por web Offline » Ter Nov 22, 2011 10:58 pm
Se baseia nesse exemplo
- Código: Selecionar todos
<form action="" method="post"> <input type="text" name="v1" value="valor1"> <input type="text" name="v2" value="valor2"> <input type="submit"> </form> <?php if(isset($_POST)) { $valor = 0; foreach($_POST as $name => $valores) { $valor++; echo "$name: $valores<br>"; } } ?>

Gostou do que encontrou? Divulgue, indique, participe, agradeça pelas respostas.
Faço scripts personalizados ou reparos em scripts. Orçamento MSN codigosnaweb1 [@] gmail [.] com
web
ADMIN
Mensagens: 12407
Registrado em: Sáb Jan 20, 2007 6:08 pm
Localização: RJ / RJ / Brasil
|
por JP.BattleKilL Offline » Ter Nov 22, 2011 11:06 pm
mas eu presiso do gerador de texfield o script. a funçao como eu faço para usar a funçao tb ?????

JP.BattleKilL
VETERANO
Mensagens: 170
Registrado em: Seg Set 12, 2011 11:53 am
Localização: Bahia Luis Eduardo Magalhães
|
Voltar para Javascript, XML e AJAX
Quem está online
Usuários navegando neste fórum: Nenhum usuário registrado e 11 visitantes
|
|
|