2009-11-18 4 views
4

Disons que j'ai ce formulaire et script:Comment obtenir le bouton d'envoi POST données lors de l'envoi par JavaScript form.submit()

<SCRIPT LANGUAGE="JavaScript"> 
function handleSubmit() { 
    return false; 
} 
function Delete(element) { 
var is_confirmed = confirm("Delete this record? \n" + title + " " + date); 
if (is_confirmed) {   
    document.getElementById("Novinky").submit(); 
} 
} 
</SCRIPT> 

<form action="index.php" method="post" id="Novinky" onsubmit="return handleSubmit();"> 
<input onclick="Delete(this)" value="Smazat" name="delete[12]" type="submit" /> 
</form> 

Y at-il un moyen d'obtenir la soumettre des données de bouton (delete[] -> Smazat) à la Demande POST?

+0

faites votre pour que l'onclick fonctionne – Treby

+0

ça marche quand même .. J'ai choisi le bouton submit donc ça fonctionnerait avec JavaScript désactivé –

Répondre

2

Il semble que vous soumettiez un formulaire différent de celui qui contient le bouton Supprimer (id=Novinky). Dans ce cas, vous pouvez ajouter un champ caché dans ce formulaire et définissez sa valeur à la valeur du bouton Supprimer juste avant de le soumettre:

if (is_confirmed) {      
    document.getElementById('myhiddenfield').value = element.value; 
    document.getElementById('Novinky').submit(); 
} 

MISE À JOUR:

Au lieu d'attacher un gestionnaire de clic le bouton de suppression, vous pouvez le faire:

<script type="text/javascript"> 
function handleSubmit() { 
    return confirm('Delete this record?'); 
} 
</script> 

<form action="index.php" method="post" id="Novinky" onsubmit="return handleSubmit();"> 
    <input value="Smazat" name="delete[12]" type="submit" /> 
</form> 

cela poster automatiquement la valeur du bouton Supprimer lorsque vous soumettez.


MAJ2:

<script type="text/javascript"> 
function handleSubmit() { 
    // check which button was clicked: 
    alert(window.clicked); 
    return confirm('Delete this record?'); 
} 
</script> 

<form action="index.php" method="post" id="Novinky" onsubmit="return handleSubmit();">   
    <input onclick="window.clicked=this.value;" value="Smazat" name="delete[12]" type="submit" /> 
</form> 
+0

Mon mauvais ... J'ai accidentellement supprimé l'identifiant de la forme simplifier l'exemple;) Je voudrais éviter d'utiliser des champs cachés supplémentaires ... Je me demandais si je pouvais modifier la fonctionnalité de submit() ou mettre le bouton à POSTed ... –

+0

S'il vous plaît voir ma mise à jour. –

+0

Cela fonctionne aussi longtemps qu'il n'y a pas de boutons de soumission différents dans le formulaire (par exemple, éditer, enregistrer, etc.) .. ce qui n'est pas mon cas (désolé, j'aurais dû le préciser ... Je suppose que je J'ai trop simplifié cet exemple :) –

1

Je viens de découvrir que ce code fait l'affaire:

<SCRIPT LANGUAGE="JavaScript"> 
function Delete(element) { 
var is_confirmed = confirm("Delete this record? \n" + title + " " + date); 
return is_confirmed;  
} 
</SCRIPT> 

<form action="index.php" method="post" onsubmit="return handleSubmit();"> 
<input onclick="return Delete(this)" value="Smazat" name="delete[12]" type="submit" /> 
</form> 

Cependant, je suis toujours intéressé s'il y a une réponse à ma question originale

0

Java Script

document.cookie = "button="+element.value+";path=/<path of php file>; domain="+window.location.hostname+";"; 

PHP

<? echo $_COOKIE["button"]; ?> 

assurez-vous de fournir le chemin php. ou simplement définir le chemin de la page actuelle.

par exemple: path =/échantillon

Do not inclure la page php.

+0

Désolé, mais je ne peux pas voir comment alert() a quelque chose à voir avec ce qui est envoyé dans la requête POST ..:/ –

+0

Voilà une solution intéressante, mais mon Le but était de faire en sorte que le script agisse de la même façon que JavaScript avec JavaScript, donc le formulaire fonctionnerait avec et sans JavaScript et il n'aurait pas besoin d'être traité séparément côté serveur ... d'où la requête POST –