2009-03-13 7 views
0

J'essaie actuellement de valider si la phrase qu'un utilisateur entre correspond à la phrase attendue. La phrase attendue est stockée dans une variable PHP $rebuiltSentence, par exemple 'the cat sat'.Comment puis-je valider une phrase en utilisant PHP et JavaScript?

Le problème est que lorsque j'essaie d'appeler ma fonction JavaScript formSubmit() je dois lui donner la phrase à vérifier, donc idéalement j'appellerais formSubmit ($ rebuiltSentence). Je pense que cela ne marchera pas parce qu'il pense qu'il est passé plusieurs chaînes séparées.

Voici ce que j'ai:

//sentence.php 

<input type='button' value='Submit' onClick=formSubmit('$rebuiltSentence') 

et

//validate.js 
function formSubmit(correct) 
{ 
var contents = document.getElementById('sentenceBuilder').value; 
if(contents==correct){ 

    alert('The Sentences Match'); 
}else{ 
    alert('The Sentences Dont Match'); 
} 

window.location.reload(true); 
} 

Toute idée comment je peux résoudre ce problème?

Répondre

0

Il semble que vous passiez la chaîne $ rebuiltSentence plutôt que la phrase que ce paramètre contient en PHP.

Modification du follwoing

//sentence.php

echo "<input type='button' value='Submit' onClick=formSubmit('".$rebuiltSentence."')"; 

et fera écho le contenu de rebuiltSentence $.

+0

Cela ne fonctionnera pas si $ rebuiltSentence contient une seule citation, et ne sera pas droit si elle contient, par exemple une esperluette. – Greg

1

Vous devez citer l'attribut et échapper correctement:

echo '<... onClick="formSubmit(' . htmlspecialchars(json_encode($rebuiltSentence)) . ');">' 
1

Vous pouvez ajouter la phrase comme un champ caché pour validation.

//sentence.php 

<input type='hidden' id=rebuiltSentence value='$rebuildSentence'> 
<input type='button' value='Submit' onClick=formSubmit()> 

et vous pouvez ensuite valider facilement utiliser

//validate.js 
function formSubmit() 
{ 
    var contents = document.getElementById('sentenceBuilder').value; 
    var correct = document.getElementById('rebuiltSentence').value; 
    if(contents==correct) 
    { 
    alert('The Sentences Match'); 
    }else{ 
    alert('The Sentences Dont Match'); 
    } 

    window.location.reload(true); 
} 
+0

C'est très bien fonctionné parfaitement! –

Questions connexes