Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Fala povo,
Há um tempo atrás, pedi uma ajuda lá na área de ASP sobre se havia algum jeito de adicionar um botão dentro de um form que, quando clicado, adicionasse um novo campo dentro do form que tivesse atributos e pudesse ser resgatado (usando request.form) quando o form fosse enviado. Me mostraram uma função que faz isso, só não me disseram como eu faria pra resgatar os valores dos novos campos, mas eu consegui descobrir sozinho.
Mas tem um pequeno detalhe (que é importante pro que eu tô tentando fazer) que eu ainda não consegui fazer.
Vou mostrar em screenshots como a função está atuando no momento:
/applications/core/interface/imageproxy/imageproxy.php?img=http://img819.imageshack.us/img819/5656/func1.jpg&key=58009e1b7669039f6c1e8db097fe1097eb36a4c2ec4797c412fa78bd4e628ecb" alt="Imagem Postada" />
Ao clicar no botão "Adicionar campo" uma vez:
/applications/core/interface/imageproxy/imageproxy.php?img=http://img214.imageshack.us/img214/8564/func2.jpg&key=ed368f2bc79bb18a12505b06f9ec0376906184211d8818a31e3fdb0089246f0c" alt="Imagem Postada" />
E ao clicar uma segunda vez:
/applications/core/interface/imageproxy/imageproxy.php?img=http://img707.imageshack.us/img707/3350/func3.jpg&key=4e39adec6bf76fc853227e990bfc6eaf8ff9acf6a63e58524dcefb324388eed9" alt="Imagem Postada" />
E isso segue a cada vez que o botão é clicado.
Como podem ver, a função está funcionando quase perfeitamente. O problema é, cada campo instanciado está sendo incluido sem quebra de linhas e sem espaços, um exatamente do lado do outro. E eu precisava que cada campo ficasse um abaixo do outro e que houvesse um espaço entre o label do campo (no exemplo, os labels são "URL1" e "URL2") e o campo em si. Alguém saberia dizer como eu poderia fazer isso?
Seguem os códigos usados:
teste.htm
<html>
<head>
<title>Teste</title>
<script language="javascript" src="teste.js"></script>
</head>
<body>
<form name="teste" id="teste" method="post" action="teste.asp">
<input type="button" name="btnAdd" id="btnAdd" value="Adicionar campo">
<br><br>
<input type="submit" name="btnSubmit" id="btnSubmit" value="Enviar">
</form>
</body>
</html>
teste.asp
<%@ Language=VBScript %>
<script language='javascript'></script>
<%
valor=1
check=true
Do while check
if (NOT(isEmpty(request.form("url"&valor)) or isNull(request.form("url"&valor)))) then
response.write request.form("url"&valor) & "<br>"
valor=valor+1
else
check=false
end if%>
teste.js
/*
*
* Como usar:
* todo o script se baseia nos parâmetros, logo você só terá que defini-los. Sâo eles:
* formID » valor do tipe ID que recebe o formulário
* buttonAdd » valor do tipo ID que recebe o botão para adicionar;
* textLabel » valor do tipo STRING que especifíca o texto que aparecerá no label
*/
window.onload = function() {
addRemoveInput("teste", "btnAdd", "URL");
};
function addRemoveInput(formId, buttonAdd, textLabel) {
var form = document.getElementById(formId);
var btnAdd = document.getElementById(buttonAdd);
var inputs = 0;
var labels = document.getElementsByTagName("label");
btnAdd.onclick = addInput;
function addInput() {
++inputs;
var label = document.createElement("label");
var input = document.createElement("input");
label.innerHTML = textLabel + inputs;
input.setAttribute("type", "text");
input.setAttribute("id", "url"+inputs);
input.setAttribute("name", "url"+inputs);
label.appendChild(input);
form.appendChild(label);
}
}
Desde já, agradeço.
Abração!
Carregando comentários...