2011-08-11 4 views
1

J'ai un formulaire dans ce projet que je suis en train de sérialiser afin que je puisse le passer à PHP et faire quelques appels de base de données en fonction des valeurs d'entrée. tout fonctionnait bien jusqu'à ce que j'ajoute une case à cocher à mon formulaire et ai essayé de le sérialiser.javascript serialize case à cocher valeur

<input type="checkbox" name="reduceHolOT" id="reduceHolOT" checked="checked" ></input> 

comment puis-je obtenir l'attribut checked ou de la valeur de cette case à cocher dans un

$('form').serialize() 

ainsi que d'autres données dans ma forme?

+0

ce que vous essayez de faire? pourquoi ne pas simplement soumettre un formulaire à php? – llamerr

+0

Fonctionne pour moi http://jsfiddle.net/hX7NS/ –

+0

sur 20 événements différents dans ma page Web javascript sérialisera tout et postera cela à divers dossiers de php basés sur ce qui a perdu le foyer ou ce qui a été cliqué. J'utilise ajax. chaque fichier php utilise différentes parties de la sérialisation, et ce dernier utilise la valeur checkbox pour effectuer un appel à la base de données. – chris

Répondre

1

Vous devez ajouter un attribut de valeur pour votre case à cocher. Bonne pratique, vous savez. Mais serialize devrait mettre la chaîne "reduceHolOT = on" dans le résultat si la case est cochée. Si elle n'est pas cochée, rien ne s'affichera si vous avez une valeur ou non.

+0

Vous pouvez résoudre ce problème en ajoutant une balise cachée avec le même nom avant la case à cocher avec la valeur = "0". Si la case est cochée, elle remplacera la valeur cachée. Si ce n'est pas le cas, vous obtiendrez 0. – Stephen

+0

@Stephen Vous savez, cela fonctionnera certainement, mais je me suis juste habitué à tester ces choses sous condition. – cwallenpoole

+0

ouais je me suis rendu compte que c'était comment cela fonctionnait et mettre dans une instruction if en php pour if ['reduceHolOT'] n'est pas défini. alors je viens de régler manuellement la variable – chris

0

Peut-être que vous devriez essayer ceci:

<!doctype html> 
<html lang="en"> 
<head> 
    <meta charset="utf-8"> 
    <title>serialize demo</title> 
    <style> 
    body, select { 
    font-size: 12px; 
    } 
    form { 
    margin: 5px; 
    } 
    p { 
    color: red; 
    margin: 5px; 
    font-size: 14px; 
    } 
    b { 
    color: blue; 
    } 
    </style> 
    <script src="https://code.jquery.com/jquery-1.10.2.js"></script> 
</head> 
<body> 

<form> 
    <select name="single"> 
    <option>Single</option> 
    <option>Single2</option> 
    </select> 

    <br> 
    <select name="multiple" multiple="multiple"> 
    <option selected="selected">Multiple</option> 
    <option>Multiple2</option> 
    <option selected="selected">Multiple3</option> 
    </select> 

    <br> 
    <input type="checkbox" name="check" value="check1" id="ch1"> 
    <label for="ch1">check1</label> 
    <input type="checkbox" name="check" value="check2" checked="checked" id="ch2"> 
    <label for="ch2">check2</label> 

    <br> 
    <input type="radio" name="radio" value="radio1" checked="checked" id="r1"> 
    <label for="r1">radio1</label> 
    <input type="radio" name="radio" value="radio2" id="r2"> 
    <label for="r2">radio2</label> 
</form> 

<p><tt id="results"></tt></p> 

<script> 
    function showValues() { 
    var str = $("form").serialize(); 
    $("#results").text(str); 
    } 
    $("input[type='checkbox'], input[type='radio']").on("click", showValues); 
    $("select").on("change", showValues); 
    showValues(); 
</script> 

</body> 
</html> 

Source Link

+0

Etes-vous sûr de cela. Avez-vous déjà utilisé la même chose? – Panther

+0

vérifiez-le d'abord avant de l'afficher – Vikrant