Jump to content

[Resolvido] - PHP Post - obter valor de input type text


skcratch

Recommended Posts

Viva!

Neste momento, estou a desenvolver uma pequena aplicação com recurso a PHP e a JavaScript. A referida aplicação, possui um formulário de registo, onde o utilizador pode seleccionar um conjunto de 4 línguas distintas para os conteúdos que irão ser posteriormente disponibilizados. Para selecção do nível de compreensão da língua, estou a utilizador o controlo slider da biblioteca jQuery. No entanto, o utilizador, pode pura e simplesmente não pretender conteúdos numa determinada lingua, bastando para isso não seleccionar a língua respectiva. No entanto, eu pretendia, que caso o utilizador não seleccionasse uma determinada língua, a esta lhe fosse atribuído o valor 0.

Para isso, recorro ao evento onsubmit do formulário, para invocar a seguinte função:

function getLanguageSelectedValues() {
	  	// set language (level of comprehension) selected values; for the not selected languages, level of comprehension is set to 0

		// portuguese language
		if (!$("#cbxPortuguese").is(":checked")) {
			//set default language value
			$("input#ptLanguageCurrentValue").val(0);
		}
}

No entanto, ao contrário daquilo que pretendo, a variável ptLanguageCurrentValue nunca aparece na variável global $_POST quando o formulário é submetido.

Será que alguém me poderia dar uma ajuda?

Cumps!

😄

Link to comment
Share on other sites

Viva!

Antes demais, peço desculpa pela falta de informação disponibilizada. A seguir é ilustrada a parte inicial do formulário:

<form name="signup" id="signup" method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>" onsubmit="javacript: getLanguageSelectedValues(); ">

A seguir, o código HTML correspondente do formulário:

<div>
<label><input type="checkbox" name="cbxPortuguese" id="cbxPortuguese" />Portuguese</label>
</div>
<div id="slider"></div>
<div id="ptLanguage" class="showHideDiv">
<div id="ptSlider"></div>
<label for="ptLanguageCurrentValue">Value:</label>
<input type="text" id="ptLanguageCurrentValue" class="languageCurrentValue" />
<br />
<input type="checkbox" name="cbxPtIsMain" id="cbxPtIsMain" />
Is your main language? 
<input type="hidden" name="ptLanguageMain" id="ptLanguageMain" value="" />
</div>

E finalmente, a função JavaScript que está a ser invocada:

function getLanguageSelectedValues() {
// set language (level of comprehension) selected values; for the not selected languages, level of comprehension is set to 0

// portuguese language
if (!$("#cbxPortuguese").is(":checked")) {
//set default language value
$("input#ptLanguageCurrentValue").val(0);
}
}

Grato desde já pela ajuda,

Cumps!

😄

Link to comment
Share on other sites

Boas,

Pelo que percebi, quando fazes submit, o jquery vai verificar e alterar o valor do formulário. Ora, como isto é processado à "velocidade da luz", provavelmente o javascript nem chega a funcionar e o browser manda-te logo para a pagina definida no action do formulário. Para conseguires o que queres, tens de fazer algo assim :

$('form[name="signup"]').bind('submit', function(e) {
    // impede a sumbissão do form
    e.preventDefault();

    if (!$("#cbxPortuguese").is(":checked")) {
        //set default language value
        $("input#ptLanguageCurrentValue").val(0);
    }

    // termina o namoro entre o bind e o submit deste formulário, e envia-o como se nada se passa-se
    $(this).unbind('submit').submit();
});

Se não funcionar diz, escrevi isso agora à pressão.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.