2013-10-17 1 views
0

Dans un répéteur, chaque ligne dispose d'une liste déroulante. Si l'utilisateur sélectionne un 'rejeté' dans la liste déroulante, je veux qu'une zone de texte apparaisse afin qu'ils puissent entrer du texte.Afficher la zone de texte onchange asp.net

L'erreur javascript je reçois est: Erreur: TypeError: RejectedReasonBox est nul

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'; 
     } 

    } 

Il semble donc que ce ne est pas obtenir l'identifiant pour RejectedReasonId mais les regards html générés fin:

onchange="RejectedShowText(this,ContentPlaceHolder1_rePxOffers_RejectedReasonPanel_0);" 

CODE DERRIÈRE

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> 

Répondre

0

J'avais la zone de texte que je voulais afficher avec un DIV enroulé autour, la DIV était cachée et j'essayais de montrer/cacher ceci. Je ne sais pas pourquoi cela a causé le problème, mais j'ai réussi à le réparer en supprimant le DIV et juste afficher/cacher la zone de texte.

0

remplacer:

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

avec:

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

espère que cela a aidé.

+0

Salut, merci, essayé cette réponse et toujours obtenir la même erreur. – JBoom

+0

Comment le html généré at-il l'air maintenant? – geevee

+0

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

Questions connexes