0

嗨,下面我有一个javascript代码,应该发生的是它在文本框旁边附加了一个文本框和[Open Grid](在一个跨度中)。文本框存储在数组 +"[]" 中,所以我尝试使用 .after() 将跨度放在文本框之后,但问题是即使它显示文本框,它也不显示跨度 [Open Grid]。如何让超链接显示在文本框旁边?

下面是代码:

    <script>

    $(document).on('click','.showGrid', function(e) {

        $(".gridBtns").removeClass("gridBtnsOn");

        var value = $(this)
            .siblings('input[name=gridValues]').val();

        $("#btn" + value.replace(/\s/g, '')).addClass("gridBtnsOn");

        $('.optionTypeTbl').fadeToggle('slow');
        $(this).parent().append($('.optionTypeTbl'));
        $('.optionTypeTbl').css({

            left: $(this).position().left,
            top: $(this).position().top + 20

        });

        e.stopPropagation();

    });


        function insertQuestion(form) {   

        var context = $('#optionAndAnswer');

        var $tbody = $('#qandatbl > tbody'); 
        var $tr = $("<tr class='optionAndAnswer' align='center'></tr>");
        var $options = $("<td class='option'></td>");

        $('.gridTxt', context).each( function() {

var $this = $(this);
var $optionsText = $("<input type='text' class='gridTxtRow maxRow' readonly='readonly' />")
    .attr('name',$this.attr('name')+"[]")
    .attr('value',$this.val())
    .appendTo( $options )
    .after("<span href='#' class='showGrid'>[Open Grid]</span>");

    $questionType = $this.val();


        });

        $tr.append($options);    
        $tbody.append($tr); 

        }

    </script>


    <form id="QandA" action="insertQuestion.php" method="post" >


    <table id="optionAndAnswer" class="optionAndAnswer">
    <tr class="option">
    <td>Option Type:</td>
    <td>
    <div>
        <input type="text" name="gridValues" class="gridTxt maxRow" readonly="readonly" />
        <span href="#" class="showGrid" id="showGridId">[Open Grid]</span>
    </div>
    <table class="optionTypeTbl">
    <tr>

        <?php
        $i = 1;
        foreach($num as $key => $val){
            if($i%7 == 1) echo"<tr><td>";
            echo"<input type=\"button\" value=\"$val\" id=\"btn".$val."\" name=\"btn".$val."Name\" class=\"gridBtns gridBtnsOff\">";        
            if($i%7 == 0) echo"</td></tr>";
            $i++;
        }
        ?>

            </tr>
            <tr>
            <td>
            <input class="gridBtns" name="btnTrueorFalseName"  id="btnTrueorFalse"  type="button"  value="True or False"  />
            <input class="gridBtns" name="btnYesorNoName"  id="btnYesorNo"  type="button"  value="Yes or No"  />
            </td>
            </tr> 
            </table>

            </td>
    </tr>
    </td>
    </tr>
    </table>


    </form>
4

2 回答 2

1

这是因为你的:

var value = $(this)
            .siblings('input[name=gridValues]').val();

实际上是:

var value = $(this)
            .siblings('input[name=gridValues[]]').val();

试试这个。如果不。然后是.map()- 我以前没有使用过,但我们可以一起研究......


更新

可能你甚至需要:

var value = $(this)
            .siblings('input[name=gridValues\\[\\]]').val();
于 2012-04-04T16:18:07.267 回答
0
var $this = $(this);
var $optionsText = $("<input type='text' class='gridTxtRow maxRow' readonly='readonly' />")
    .attr('name',$this.attr('name')+"[]")
    .attr('value',$this.val())
    .appendTo( $options )
    .after("<span class='showGrid'>[Open Grid]</span>");

试试这个

于 2012-04-04T15:18:03.663 回答