11550 sujets

JavaScript, DOM et API Web HTML5

Hello; je suis en train de modifier une fonction trouvée sur le net qui permet de griser un champs B si un champs A n'a pas été rempli avant.
J'ai donc

<form name="searchpeople" action="..." method="post">
<input type="text" size="10" name="cp1a" value="" onkeyup="greyfield(document.searchpeople);"> à <input type="text" size="10" name="cp1b" value="" disabled="disabled">
</form>

<!-- fonction de disabling de champs -->
<script type="text/javascript">

function greyfield(formulaire)
{
if (formulaire.cp1a = '')
formulaire.cp1b.disabled = true;
else
formulaire.cp1b.disabled = false;
}

</script>


Ceci fonctionne.
Maintenant, j'aimerais "généraliser" ma fonction pour pouvoir l'utiliser à d'autres endroits du formulaire.
J'ai donc modifié le code :

<form name="searchpeople" action="..." method="post">
<input type="text" size="10" name="cp1a" value="" onkeyup="greyfield(document.searchpeople,this,'cp1b');"> à <input type="text" size="10" name="cp1b" value="" disabled="disabled">
</form>

<!-- fonction de disabling de champs -->
<script type="text/javascript">

function greyfield(formulaire, initfield, targetfield)
{
if (formulaire.initfield = '')
formulaire.targetfield.disabled = true;
else
formulaire.targetfield.disabled = false;
}

</script>


J'ai remarqué que la fonction marchait lorsque j'ajoutais l'arguement initfield :
onkeyup="greyfield(document.searchpeople,this);">
<script type="text/javascript">
function greyfield(formulaire, initfield)


Mais quand je met le targetfield, ça ne fonctionne plus
onkeyup="greyfield(document.searchpeople,this,'cp1b');">
<script type="text/javascript">
function greyfield(formulaire, initfield,targetfield)


Je ne m'y connais pas très bien en javascript, mais je ne vois pas du tout le problème... Ce n'est pas non plus le nom de l'argument "targetfield", puisqu'en "torgetfield" ça ne fonctionne pas non plus !

Merci pour votre aide !
Modifié par gordie (02 May 2007 - 14:47)
<!-- fonction de disabling de champs -->
<script type="text/javascript">

function greyfield(formulaire, initfield, targetfield)
{
if (formulaire.initfield = '')
formulaire.cp1b.disabled = true;
else
formulaire.cp1b.disabled = false;
}

</script>
fonctionne;

<!-- fonction de disabling de champs -->
<script type="text/javascript">

function greyfield(formulaire, initfield, targetfield)
{
if (formulaire.initfield = '')
formulaire.targetfield.disabled = true;
else
formulaire.targetfield.disabled = false;
}

</script>
donne
a écrit :
Erreur : formulaire.targetfield has no properties


<!-- fonction de disabling de champs -->
<script type="text/javascript">

function greyfield(formulaire, initfield, targetfield)
{
if (formulaire.initfield = '')
formulaire.getElementByName('targetfield').disabled = true;
else
formulaire.getElementByName('targetfield').disabled = false;
}

</script>
et
<!-- fonction de disabling de champs -->
<script type="text/javascript">

function greyfield(formulaire, initfield, targetfield)
{
if (formulaire.initfield = '')
formulaire.getElementByName(targetfield).disabled = true;
else
formulaire.getElementByName(targetfield).disabled = false;
}

</script>

donnent
a écrit :
Erreur : formulaire.getElementByName is not a function


...
Modifié par gordie (02 May 2007 - 14:55)