2017-12-19 2 views
0

So soll diese nach vorne ziemlich gerade sein, und ich bin nicht sicher, warum ich in ein Problem bin mitEs wird versucht, den Dropdown-Wert beim Laden zu überprüfen, und er funktioniert nicht.

ich die folgenden Drop-Down-Liste auf einer .jsp Seite

<form:select path="affProgramSessionList[${stIndx}].affidavitAttendeeTypeDetailDto.attendeeType" id="facultyAttendee_${session.id}" onchange="showFacultyInfo(this)"> 
<c:if test="${contains eq true}"> 
    <c:if test="${facultyMember eq true}"> 
     <form:option value="Attendee" label="Attendee" /> 
     <form:option value="Faculty" label="Faculty" selected="selected" /> 
    </c:if> 
    <c:if test="${facultyMember eq false}"> 
     <form:option value="Attendee" label="Attendee" selected="selected"/> 
     <form:option value="Faculty" label="Faculty" /> 
    </c:if> 
</c:if> 
<c:if test="${contains eq false}"> 
    <form:option value="Attendee" label="Attendee" selected="selected" /> 
    <form:option value="Faculty" label="Faculty" /> 
</c:if> 
</form:select> 

Dies verhält sich, wie es geschaffen haben sollte und erstellt ein Dropdown mit zwei Optionen.

Wie Sie anhand des Codes sehen können, abhängig davon, welche Bedingungen wahr/falsch sind, wird bestimmt, welcher Wert automatisch ausgewählt wird.

Wenn der Wert "Fakultät" ist, gibt es ein paar versteckte Felder, die angezeigt werden sollten.

Sie werden bemerken, dass eine Funktion vom Ereignis onchange() aufgerufen wird. Ich werde Ihnen den Code für diese Funktion unten auch zeigen.

Nach document.ready der folgende Code führt

$("input[id*='facultyAttendee_']").each(function() { 
    if ($(this).val() === "Faculty") { 
     showFacultyInfo(this); 
    } 
}); 

, dass die gleiche Funktion aufruft, die das Drop manuell ändert sich wie nicht erwähnt oben

function showFacultyInfo(elt){ 
var dataid = elt.id.split('_')[1]; 
if(elt.value==='Faculty') { 
    $('#' + "facultyDetail_" + dataid).show(); 
    $('#' + 'fullAttendenceNY_' + dataid).val("Yes"); 
    $('#' + 'fullAttendenceNY_' + dataid).prop('disabled', true); 
    $('#' + 'partialAtt_' + dataid).hide(); 
} 
else { 
    $('#' + "facultyDetail_" + dataid).hide(); 
    $('#' + 'fullAttendenceNY_' + dataid).prop('disabled', false); 
} 
} 

Dieser Code funktioniert für die manuelle Drop-Down-Änderung aber scheint nicht so zu sein, wie es auf document.load sein sollte, wenn der Wert in der Dropdown-Liste bereits Fakultät ist.

Jede Hilfe, um herauszufinden, warum es geschätzt wird.

danke

Antwort

1

Versuchen Sie es. Es ist einfacher,

Ich hatte Eingang zu ändern [, um [

$(function() { 
 
    $("select[id^='facultyAttendee_']").on("change", function() { 
 
    var show = $(this).val() === "Faculty", 
 
     dataid = this.id.split("_")[1]; 
 
    $("#partialAtt_" + dataid).toggle(!show); 
 
    $("#facultyDetail_" + dataid).toggle(show); 
 
    $("#fullAttendenceNY_" + dataid).val(show?"Yes":"No"); 
 
    $("#fullAttendenceNY_" + dataid).prop('disabled', show); 
 
    }).change(); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
Attendee: <select id="facultyAttendee_xxx"> 
 
     <option value="Attendee">Attendee</option> 
 
     <option value="Faculty" selected="selected" >Faculty</option> 
 
</select><br/> fullAttendenceNY: 
 
<select id="fullAttendenceNY_xxx"> 
 
     <option value="Yes">Yes</option> 
 
     <option value="No">No</option> 
 
</select> 
 

 
<div id="facultyDetail_xxx">facultyDetail</div><br/> 
 
<div id="partialAtt_xxx">partialAtt</div>

+0

ist dies die showFacultyInfo() Funktion ersetzen gemeint? Auch was ist mit meiner .ach Funktion. Wird das noch benötigt? – TonyO

+0

'$ (function() {....})' ist das gleiche wie document.ready. Der Code innerhalb ersetzt sowohl Ihre einzelnen und Ihre ShowFacultyInfo Funktionen und die letzte .change triggert es auf allen von ihnen – mplungjan

+0

Ich habe den Code außerhalb Ihrer Funktion document.ready gestellt. es scheint sich nicht zu öffnen und zeigt die Felder so, wie es noch sein sollte. Auch die manuelle Auswahl der Fakultät funktioniert nicht mehr. Gibt es noch weitere Schritte, um diese Funktion zu erfüllen? – TonyO

Verwandte Themen