下面我有一个javascript代码,其中应该发生的是它附加文本框和文本框旁边的[Open Grid](在一个范围内)。文本框存储在一个数组+“[]”中,所以我尝试使用.after()在文本框之后放置span,但问题是即使显示文本框,它也不会显示span [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>
答案 0 :(得分: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();
答案 1 :(得分: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>");
试试这个