[RESOLVIDO] Como colocar uma msg sim/não de confirmação antes de fazer update

Prezados, em pesquisa pelo forum localizei a seguinte ajuda em relação a duvida:

(postado por marcelo_miranda em 22/01/2013
Insere o código modificado com a sua necessidade em formulário > javascript > Selecione Form > Selecione onSubmit.
No meu formulário existia um campoA e um campoB, no javascript é sempre em minusculo.
O nome do form por padrão é sempre F1, só alterar os nomes dos campos e o nome da aplicação(form_teste_javascript.php), se o usuário cancelar ele dá a mensagem de cadastro não atualizado e redireciona para aplicação novamente sem realizar a inclusão/alteração.

///////////////////
if(confirm(“Confirma? \nValor CampoA: " + document.F1.campoa.value + " \nValor CampoB: " + document.F1.campob.value)){
alert(“Cadastro Atualizado!”);
}else{
alert(“Cadastro Não Atualizado!”);
location.href=”…/form_teste_javascript/form_teste_javascript.php";
}
/////////////////

no meu formulário utilizo os seguintes campos

[sm_matricula] ,[sm_empregado] ,[sm_area] ,[sm_cargo_atual] ,[sm_valor_cargo_atual] ,[sm_cargo_proposta] ,[sm_valor_cargo_proposta] ,[sm_id_simulador]
,[sm_dta_simula] ,[sm_resp_simula] ,[sm_dta_atualiza_simula] ,[sm_resp_atualiza_simula] ,[sm_salario] ,[sm_dif_vlr_cargo] ,[sm_referencia] ,[sm_mes_atualizacao]

alguma dica? a principio entendi que devo citar todos os campos no javascript

A solução proposta funciona com base na ordem de execução das instruções. A submissão do form segue, groseiramente, esse percurso:

Evento submit (JS) > Script onValidate (PHP) > Script onValidateSuccess (PHP) > Scripts onBefore (PHP) > Alterações na base de dados (PHP) > Scripts onAfter (PHP)

O redirecionamento está acontecendo no Javascript, no caso de negação bem antes de o PHP receber a requisição do form e executar as alterações na base de dados.

Mas não consegui compreender a pergunta. Você gostaria de saber qual campo referenciar? Nesse caso, basta abrir e inspecionar sua aplicação gerada. Utilize a função “inspecionar” de seu navegador no campo que deseja utilizar no Javascript e observe o que está contido no atributo “name” do input. Verifique também qual é o valor do mesmo atributo na tag “form” em que seu campo está inserido. O resultado final terá esse formato:

document...value

devo referenciar todos os campos? no caso ficaria assim:

if(confirm("Confirma? \nValor sm_matricula: " + document.form_simulador.sm_matricula.value + "
\nValor sm_empregado: " + document.form_simulador.sm_empregado.value + "
\nValor sm_area: " + document.form_simulador.sm_area.value + "
\nValor sm_cargo_atual: " + document.form_simulador.sm_cargo_atual.value + "
\nValor sm_valor_cargo_atual: " + document.form_simulador.sm_valor_cargo_atual.value + "
\nValor sm_cargo_proposta: " + document.form_simulador.sm_cargo_proposta.value + "
\nValor sm_valor_cargo_proposta: " + document.form_simulador.sm_valor_cargo_proposta.value + "
\nValor sm_id_simulador: " + document.form_simulador.sm_id_simulador.value + "
\nValor sm_dta_simula: " + document.form_simulador.sm_dta_simula.value + "
\nValor sm_resp_simula: " + document.form_simulador.sm_resp_simula.value + "
\nValor sm_dta_atualiza_simula: " + document.form_simulador.sm_dta_atualiza_simula.value + "
\nValor sm_resp_atualiza_simula: " + document.form_simulador.sm_resp_atualiza_simula.value + "
\nValor sm_salario: " + document.form_simulador.sm_salario.value + "
\nValor sm_dif_vlr_cargo: " + document.form_simulador.sm_dif_vlr_cargo.value + "
\nValor sm_referencia: " + document.form_simulador.sm_referencia.value + "
\nValor sm_mes_atualizacao: " + document.form_simulador.sm_mes_atualizacao.value))

{
alert(“Cadastro Atualizado!”);
}
else
{
alert(“Cadastro Não Atualizado!”);
location.href="…/form_teste_javascript/form_teste_javascript.php";
}

sendo que:

location.href="…/form_simulador_javascript/form_simulador_javascript.php";

Você precisa ver se são esses mesmos os nomes quando inspeciona o HTML.

Acho improvável que o nome do seu form seja form_simulador, geralmente é F1. E o nome dos campos, geralmente é tudo junto sem undeline (por exemplo: smmatricula).

Mas, repito, é importante que voce utilize a função “inspecionar” do seu browser para ver o conteúdo do atributo name dentro do input e do form em que ele está contido, para cada um dos seus campos

ok! vamos lá
executei o form e no campo matricula com o botão inverso do mouse Inspecionar o elemento, até ai de boa
me retornou o código onde encontrei os nomes

<input id=“id_ac_sm_matricula”
name = “sm_matricula_autocomp”
qual seria dos dois?

em outro campo sm_area fiz o mesmo procedimento dentro do campo no formulario form_simulador

<select id=“id_sc_field_sm_area”
name = “sm_area”
qual seria dos dois?

obrigado pela ajuda

Seria o valor do atributo name.

fiquei na dúvida em relação a qual campo usaria pela observação do HenriqueB
“Acho improvável que o nome do seu form seja form_simulador, geralmente é F1. E o nome dos campos, geralmente é tudo junto sem undeline (por exemplo: smmatricula).”

uma vez definido o código

crio um Método Javasript, defino o nome e executo ele em qual evento do form?

Tentarei ser mais sucinto:

Ao inspecionar o campo da sua aplicação, o cursor do inspetor estará selecionando uma tag . Nessa tag, haverá um atributo NAME (os outros atributos, como id e class são irrelevantes para esse caso). O valor contido nesse atributo será o NOME DO SEU CAMPO. Guarde bem esse valor.

Na mesma tela de inspeção, você deverá localizar o pai desse seu input, e o pai deste pai, sucessivamente, até chegar à tag que o contém. Esse form terá também uma tag NAME, que representará o NOME DO SEU FORM. Guarde bem esse valor.

(Poupando seu tempo, a menos que sua aplicação seja pesadamente customizada, o nome do seu form é sempre F1)

Agora que você possui os dois valores, o que você deve fazer para exibí-los em um evento Javascript é escrevê-los da seguinte forma:

(estou usando no exemplo, a informação que você me deu sobre os seus campos sm_matricula_autocomp e sm_area)
document.F1.sm_matricula_autocomp.value
document.F1.sm_area.value

Se você deseja criar uma ação de confirmação antes do envio do formulário, você deverá criar um evento onSubmit para o Form e utilizar esses valores como preferir.

Só adicionando informação:

Você pode utilizar de JavaScript diretamente no item “JavaScript” do menu lateral da aplicação Formulário.

Vide: http://www.scriptcase.com.br/aprendizagem/documentacao/pt_br/v9/manual/06-aplicacoes/04-aplicacao-formulario/12-javascript/

ok, agradeço a opinião de todos (vou estudar ambas, como estou no começo vou tentar a opção do HerniqueB)

no caso do location.href devo usar o nome que usei do form correto?

alert(“Cadastro Não Atualizado!”);
location.href="…/form_teste_javascript/form_teste_javascript.php";
}

Sim. Na verdade, o nome que aparece na URL do seu browser quando você acessa a aplicação desejada. Geralmente, é o nome do aplicativo, mesmo.

sendo assim codigo ficou:

if(confirm(“Confirma? \nValor sm_matricula_auto_comp: " + document.F1.sm_matricula_auto_comp.value + "
\nValor sm_empregado: " + document.F1.sm_empregado.value + "
\nValor sm_area: " + document.F1.sm_area.value + "
\nValor sm_cargo_atual: " + document.F1.sm_cargo_atual.value + "
\nValor sm_valor_cargo_atual: " + document.F1.sm_valor_cargo_atual.value + "
\nValor sm_cargo_proposta: " + document.F1.sm_cargo_proposta.value + "
\nValor sm_valor_cargo_proposta: " + document.F1.sm_valor_cargo_proposta.value + "
\nValor sm_id_simulador: " + document.F1.sm_id_simulador.value + "
\nValor sm_dta_simula: " + document.F1.sm_dta_simula.value + "
\nValor sm_resp_simula: " + document.F1.sm_resp_simula.value + "
\nValor sm_dta_atualiza_simula: " + document.F1.sm_dta_atualiza_simula.value + "
\nValor sm_resp_atualiza_simula: " + document.F1.sm_resp_atualiza_simula.value + "
\nValor sm_salario: " + document.F1.sm_salario.value + "
\nValor sm_dif_vlr_cargo: " + document.F1.sm_dif_vlr_cargo.value + "
\nValor sm_referencia: " + document.F1.sm_referencia.value + "
\nValor sm_mes_atualizacao: " + document.F1.sm_mes_atualizacao.value))
{
alert(“Cadastro Atualizado!”);
}
else { alert(“Cadastro Não Atualizado!”);
location.href=”…/form_simulador_javascript/form_simulador_javascript.php";
}

sem querer abusar da boa vontade no caso do formulário colo o código onde?
ou crio um metodo javascript e chamo em algum evento?

cara desculpe! fiquei perdido

Na barra lateral da tela de edição do seu formulário, clique em JAVASCRIPT, e selecione as opções FORM e ONSUBMIT, depois clique em EDITAR. Deverá aparecer o local onde colar o código.

Em caso de dúvidas, favor ler a postagem do colega Ronyan:

desculpe falta de atenção, vou ler a postagem e em breve retorno
obrigado pelos esclarecimento.

em pesquisa pelo forum localizei o seguinte topico

http://www.scriptcase.com.br/forum/index.php/topic,9106.msg44624.html#msg44624

achei interessante e menos complexo, ainda estou estudando a postagem do colega
mas achei legal o topico que achei bem simples

após estudar decidi ficar com a solução mais simples (postado por Jailton em Julho 22, 2014, 06:19:46 pm)
agradeço os esclarecimento de todos por mim está resolvido.

CONFIRMAÇÃO EM JAVASCRIPT MOSTRA MENSAGEM com OK e CANCELAR

Crie um campo virtual no formulário chamado: {RetornoJavascript}, marque ele para ficar como campo escondido.

Colocar esta Função no Formulário em: JavaScript
Form > OnSubmit:

if (confirm(‘Deseja Continuar?’)) {
document.F1.retornojavascript.value=‘S’;
} else {
document.F1.retornojavascript.value=‘N’;
}

Agora no Evento > OnValidate tratar o retorno do JavaScript.

if ({RetornoJavaScript}==‘S’) {

// Usuário Clicou em OK

// Executa seus procedimentos aqui em PHP e MACROS DO SC

sc_exit(); // Fechar o formulário de controle quando terminar.

}

Observações: Sempre os Eventos JavaScript vão ser executados primeiro que os eventos PHP do formulário, e
os campos que são definidos nas funções do JavaScript tem que ser sempre normalizados para ficar tudo em minúsculo,
exemplo: no Formulário o campo esta como RetornoJavaScript e na função JavaScript temo que digita-lo como retornojavascript.

** Agora para mostrar o STATUS é só criar um CAMPO em BAIXO, Colocar a Letra em Branco e o Fundo em verde,
após terminar colocar:
{Status}=‘Operação BEM SUCEDIDA!’;