0

こんにちは、私はjavascriptコードを持っています。そこでは、テキストボックスと[Open Grid](スパン内にあります)がテキストボックスの横に追加されます。テキストボックスは配列+"[]"に格納されているため、.after()を使用してテキストボックスの後にスパンを配置しようとしましたが、問題は、テキストボックスを表示してもスパンを表示しないことです[OpenGrid]。テキストボックスの横にハイパーリンクを表示するにはどうすればよいですか?

以下はコードです:

    <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 に答える