如何发布已打开按钮的值?

时间:2012-10-04 11:05:36

标签: php jquery

我需要帮助才能将正确的按钮发布到数据库中。但是在发布按钮的值时,我不知道调用$ _POST方法的内容。

我有一个应用程序,您可以查看here

请按照以下步骤使用申请表:

  1. 点击“打开网格”链接并选择“5”按钮,您将看到下面出现5个按钮“A-E”。
  2. 点击按钮'A'和'C',这些按钮会变为绿色,表示它们已经打开。
  3. 现在点击“添加问题”按钮,将您已完成的内容附加到下面的表格行中。
  4. 现在请再次重复步骤1-3,但这次选择按钮“7”,这样您就会看到“AG”按钮并点击按钮“B”,“D”和“F”,这样这些按钮就会打开。
  5. 现在您将看到有2个表行,第一个表行的按钮'A'和'C'打开,第二行有按钮'B','D'和'F'打开。

    我的问题是,我如何只支持那些仅打开按钮的那些(在上面的示例中它应该发布'A'和'C',它应该发布'B','D'和'F'?我需要写的$ _POST方法是什么?

    下面是输出顶部控件和附加行中的字母按钮的代码:

    顶部控制中的字母按钮

    <table id="optionAndAnswer" class="optionAndAnswer">
    <tr>
          <th colspan="2">
            Option and Answer
        </th>
    </tr>
            <?php
                $a = range("A","Z");
            ?>
    
            <table id="answerSection">
                <tr>
    
            <?php
                $i = 1;
                foreach($a as $key => $val){
                    if($i%7 == 1) echo"<tr><td>";
                    echo"<input type=\"button\" onclick=\"btnclick(this);\" value=\"$val\" id=\"answer".$val."\" name=\"answer".$val."Name\" class=\"answerBtns answers answerBtnsOff\">";      
                    if($i%7 == 0) echo"</td></tr>";
                    $i++;
                }
            ?>
                </tr>
                <tr>
            <td>
            <input class="answerBtns answers answerBtnsOff" name="answerTrueName"  id="answerTrue"  type="button"   value="True"    onclick="btnclick(this);"/>
            <input class="answerBtns answers answerBtnsOff" name="answerFalseName" id="answerFalse"     type="button"   value="False"   onclick="btnclick(this);"/>
            <input class="answerBtns answers answerBtnsOff" name="answerYesName"   id="answerYes"   type="button"   value="Yes"     onclick="btnclick(this);"/>
            <input class="answerBtns answers answerBtnsOff" name="answerNoName"    id="answerNo"        type="button"   value="No"      onclick="btnclick(this);"/>
            </td>
            </tr>
            </table>
    </td>
    </tr>
    </table>
    

    下面是每行附加的字母按钮

        function insertQuestion(form) {   
    
                    var context = $('#optionAndAnswer');
            var currenttotal = context.find('.answerBtnsOn').length;        
    
    
    
            var $tbody = $('#qandatbl > tbody'); 
            var $tr = $("<tr class='optionAndAnswer' align='center'>");
            var $td = $("<td class='extratd'>");
            var $answer = $("<div class='answer'>3. Answer:<br/></div>");
    
    
        var $this, i=0, $row, $cell;
        $('#optionAndAnswer .answers').each(function() {
            $this = $(this);
            if(i%7 == 0) {
                $row = $("<tr/>").appendTo($answer);
                $cell = $("<td/>").appendTo($row);
            }
            var $newBtn = $("<input class='answerBtnsRow answers' type='button' style='display:%s;' onclick='btnclick(this);' />".replace('%s',$this.is(':visible')?'inline-block':'none')).attr('name', $this.attr('name')).attr('value', $this.val()).attr('class', $this.attr('class')).attr('id', $this.attr('id')+'Row');
    
            $newBtn.appendTo($cell);
    
            i++;
        });
    
    
            $tr.append($td);
            $td.append($answer);
            $tbody.append($tr); 
    
    
        }
    

    下面是jquery函数,它打开和关闭按钮:

    function btnclick(btn)
    {
        var context = $(btn).parents('#optionAndAnswer');
        if (context.length == 0) {
            context = $(btn).parents('tr');
        }
        var $btn = $(btn);
    
    $(btn).toggleClass("answerBtnsOff");
    $(btn).toggleClass("answerBtnsOn");
    
        return false;
    }
    

2 个答案:

答案 0 :(得分:1)

作为我评论的后续内容,您可以尝试这样的事情:

每次按“回答”(其中一个数字值),您可以向表单中添加一个包含值和唯一标识符的隐藏输入:

$('.answerBtns').on('click', function() {
    // when clicking an answer button, get the value, and id, since you'll need them
    var btn     = $(this);
    var value   = btn.val();
    var id      = btn.attr('id');

    // is the button pressed and turned on?
    if ($(this).hasClass('answerBtnsOff')) {
        // append those values to the form
        var input = '<input type="hidden" value="' + value + '" name="' + id + 'value" />';
        $('#QandA').append(input);

        // toggle the button
        btn.removeClass('answerBtnsOff').addClass('answerBtnsOn');

    // do the opposite - remove the input
    } else {
        $('#QandA').remove('#' + id + 'value');
        btn.removeClass('answerBtnsOn').addClass('answerBtnsOff');
    }

});

但是,您需要有一些方法来确定这些答案属于特定问题。例如,你可以为每个发送的问题使用一个计数器,并将其附加到字段的名称,因此对于第一个问题,它最终会像answerBid1那样等等。

答案 1 :(得分:0)

关闭时将disabled属性添加到字段中。