2010-11-11 15 views
0

J'ai un problème avec mon code .. quand j'obtiens la valeur de la question [i] .. par exemple: si j'ai une question qui provient de la base de données et montrée dans la rangée de tableau comme "Quel est votre nom" .. puis je mets dans un type caché ...Obtenir la valeur Chaîne de l'entrée cachée avec JQuery et AIR

lorsque je publie ce formulaire .. je rappelle la question .. il doit «Quel est votre nom» mais je n'ai que le premier chaîne est « Qu'est-ce que » .. Quelqu'un pourrait fixer mon code .. ou corriger l'erreur

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
<head> 
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> 
    <title>Untitled Document</title> 
</head> 
<body> 
    <form name="savequestion" action="#" method="post"> 
    <div id="readDatabase"> 
    <table id="questionlist"></table> 
    </div> 
    </form> 


    <script type="text/javascript" src="js/jquery.js"></script> 
    <script src="js/AIRAliases.js" /> 
    <script src="js/database.js" /> 
    <script type="text/javascript"> 

    $(document).ready(function(){ 
    db = SetupDB(); 
    read_questions(); 
    $('#save').click(function(){ 
    var count_data=$("#countof_record").val(); 
    for (i = 0; i < count_data; i++) { 
     //get value of question+i 
     **alert($("#question"+i).val());** 
//------------------------------i will get question here, but i only get : first string of question---------------------------- 
    } 

    }); 
    }); 

    function read_questions(){ 
    dbQuery = new air.SQLStatement(); 
    dbQuery.sqlConnection = db; 
    dbQuery.text = "SELECT * FROM t_Questions"; 
    try { 
    dbQuery.execute(); 
    } 
    catch (e) { 
    alert(e.message); 
    } 
    results = dbQuery.getResult(); 
    //$("#questionlist tbody").empty(); 
    for (i = 0; i < results.data.length; i++) { 
     row = results.data[i]; 
     var questions=row.ContentQuestion; 
     alert(questions); 
    $("#questionlist").append("<tr id=rowQuestion><td>"+(i+1)+"</td><td><input type=hidden name=question"+i+" id=question"+i+" value="+questions+" size=255>"+row.ContentQuestion+"</td><td><select name=answer"+i+" id=answer"+i+"><option name=answerA value=A selected>"+row.OptionAQuestion+"</option><option name=answerB value=B>"+row.OptionBQuestion+"</option><option name=answerC value=C>"+row.OptionCQuestion+"</option><option name=answerD value=D>"+row.OptionDQuestion+"</option></select></td></tr>"); 
    } 
    $("#questionlist > tbody:last").append("<tr><td><input type=hidden name=countof_record id=countof_record value="+results.data.length+"><input type=submit name=submit value=Save your answer id=save></td></tr>"); 
    } 
    </script> 
</body> 
</html> 

Répondre

0

vous manque des citations, et vous êtes sur tous vos attributs réutilisant l'ID rowQuestion, à corr ect ça. Toujours envelopper vos attributs entre guillemets.


Comme alternative à votre approche actuelle, check out jQuery templates, un modèle pour votre code ressemblera à ceci (j'espère que vous serez d'accord, beaucoup plus facile à maintenir aussi):

<script id="rowTmpl" type="text/x-jquery-tmpl"> 
    {{each items}} 
    <tr class="rowQuestion"> 
    <td>${$index+1}</td> 
    <td><input type="hidden" name="question${$index}" id="question${$index}" value="${$value.ContentQuestion}">${$value.ContentQuestion}</td> 
    <td> 
     <select name="answer${$index}" id="answer${$index}"> 
     <option name="answerA" value="A">${$value.OptionAQuestion}</option> 
     <option name="answerB" value="B">${$value.OptionBQuestion}</option> 
     <option name="answerC" value="C">${$value.OptionCQuestion}</option> 
     <option name="answerD" value="D">${$value.OptionDQuestion}</option> 
     </select> 
    </td> 
    </tr 
    {{/each}}> 
    <tr> 
    <td> 
     <input type="hidden" name="countof_record" id="countof_record" value="${items.length}"> 
     <input type="submit" name="submit" value="Save your answer" id="save"> 
    </td> 
    </tr> 
</script> 

Pour l'utiliser, vous souhaitez le remplacer:

for (i = 0; i < results.data.length; i++) { 
    row = results.data[i]; 
    var questions=row.ContentQuestion; 
    alert(questions); 
    $("#questionlist").append("<tr id=rowQuestion><td>"+(i+1)+"</td><td><input type=hidden name=question"+i+" id=question"+i+" value="+questions+" size=255>"+row.ContentQuestion+"</td><td><select name=answer"+i+" id=answer"+i+"><option name=answerA value=A selected>"+row.OptionAQuestion+"</option><option name=answerB value=B>"+row.OptionBQuestion+"</option><option name=answerC value=C>"+row.OptionCQuestion+"</option><option name=answerD value=D>"+row.OptionDQuestion+"</option></select></td></tr>"); 
} 
$("#questionlist > tbody:last").append("<tr><td><input type=hidden name=countof_record id=countof_record value="+results.data.length+"><input type=submit name=submit value=Save your answer id=save></td></tr>"); 

Avec ceci:

$("#rowTmpl").tmpl({items: results.data}).appendTo("#questionlist"); 
+0

pouvez-vous le réparer nick .. coz .. je reçois encore erreur –

+0

@Frans - J'ai fourni une bien meilleure alternative ci-dessus ... votre balisage est complètement invalide actuellement, de sorte que vous obtiendrez toutes sortes d'erreurs en conséquence. –