2013-10-17 81 views
0

在中继器中,每行都有一个下拉列表。如果用户从下拉菜单中选择“拒绝”,我想要一个文本框出现,以便他们可以输入一些文本。显示文本框onchange asp.net

的JavaScript错误我得到的是: 错误:类型错误:RejectedReasonBox是空

JAVASCRIPT

function RejectedShowText(sel, RejectedReasonId) { 

     var RejectedReasonBox = document.getElementById(RejectedReasonId); 

     window.alert(RejectedReasonId); 

     if (sel.options[sel.selectedIndex].value == 'Rejected') { 

      RejectedReasonBox.style.display = ''; 
     } 
     else { 
         RejectedReasonBox.style.display = 'none'; 
     } 

    } 

这样看来,它没有得到价值RejectedReasonId的ID,但生成的HTML如下精细:

onchange="RejectedShowText(this,ContentPlaceHolder1_rePxOffers_RejectedReasonPanel_0);" 

后面的代码

dPxOfferStatus.Attributes.Add("onchange", "RejectedShowText(this," & RejectedReasonPanel.ClientID & ");") 

HTML

<div id="PxOfferDetails"> 


      <table style="width: 100%;" class="dataInput dataInputBorder" cellpadding="0" cellspacing="0"> 
       <tr> 
        <th>Offer (£)</th> 
        <th>Offer (%)</th> 
        <th>Date</th> 
        <th>Offer Expiry</th> 
        <th>Extended</th> 
        <th>Offer Status</th> 
        <th>&nbsp;</th> 
        <th>&nbsp;</th> 
        <th>&nbsp;</th> 
        <th>&nbsp;</th> 
        <th>&nbsp;</th> 
        <th>&nbsp;</th> 
       </tr> 

       <tr> 
        <td><span id="ContentPlaceHolder1_rePxOffers_lPxOfferAmount_0">£110,000.00</span></td> 
        <td><span id="ContentPlaceHolder1_rePxOffers_lPxOfferPercent_0">84.62</span></td> 
        <td><span id="ContentPlaceHolder1_rePxOffers_lPxOfferDate_0">26/02/2013</span></td> 
        <td><span id="ContentPlaceHolder1_rePxOffers_lPxOfferExpiry_0">05/03/2013</span></td> 
        <td><input name="ctl00$ContentPlaceHolder1$rePxOffers$ctl01$tPxOfferExtended" type="text" id="ContentPlaceHolder1_rePxOffers_tPxOfferExtended_0" class="date" /></td> 
        <td><select name="ctl00$ContentPlaceHolder1$rePxOffers$ctl01$dPxOfferStatus" id="ContentPlaceHolder1_rePxOffers_dPxOfferStatus_0" class="small" onchange="RejectedShowText(this, &#39;ContentPlaceHolder1_rePxOffers_RejectedReasonPanel_0&#39;);"> 
    <option selected="selected" value="Awaiting Decision">Awaiting Decision</option> 
    <option value="Accepted">Accepted</option> 
    <option value="Rejected">Rejected</option> 

</select> 

         <div id="ContentPlaceHolder1_rePxOffers_RejectedReasonPanel_0" style="display:none;"> 

          <input name="ctl00$ContentPlaceHolder1$rePxOffers$ctl01$tPxRejectedReason" type="text" size="20" id="ContentPlaceHolder1_rePxOffers_tPxRejectedReason_0" /> 

</div> 
        </td> 
        <td></td> 
        <td><a id="ContentPlaceHolder1_rePxOffers_btnRecreatePxOffer_0" class="btnLinkMed">Recreate</a></td> 
        <td><input type="button" name="ctl00$ContentPlaceHolder1$rePxOffers$ctl01$btnUpdatePxOffer" value="Update" onclick="javascript:__doPostBack(&#39;ctl00$ContentPlaceHolder1$rePxOffers$ctl01$btnUpdatePxOffer&#39;,&#39;&#39;)" id="ContentPlaceHolder1_rePxOffers_btnUpdatePxOffer_0" class="btnSubmitSmall" /></td> 
        <td><a id="ContentPlaceHolder1_rePxOffers_btnEmailPxOffer_0" class="btnLinkMed">Email</a></td> 
        <td>&nbsp;</td> 
        <td><input type="image" name="ctl00$ContentPlaceHolder1$rePxOffers$ctl01$btnDeletePxOffer" id="ContentPlaceHolder1_rePxOffers_btnDeletePxOffer_0" title="Remove PX Offer" class="btnDelete" src="images/icon-delete.png" onclick="return confirm(&#39;Are you sure you want to remove this PX Offer?&#39;);" /></td> 
       </tr> 

      </table> 

回答

0

我有一个文本框,我想显示一个包裹它的DIV,DIV是隐藏的,我试图显示/隐藏它。

我不知道为什么这是造成这个问题,但我设法通过删除DIV和只显示/隐藏文本框来解决它。

0

取代:

dPxOfferStatus.Attributes.Add("onchange", "RejectedShowText(this," & RejectedReasonPanel.ClientID & ");") 

有:

dPxOfferStatus.Attributes.Add("onchange", "RejectedShowText(this,'" & RejectedReasonPanel.ClientID & "');") 

希望它帮助。

+0

嗨,谢谢,试过这个答案,仍然得到相同的错误。 – JBoom

+0

现在生成的html看起来如何? – geevee

+0

onchange =“RejectedShowText(this,'ContentPlaceHolder1_rePxOffers_RejectedReasonPanel_0');” – JBoom