2017-11-15 9 views
0

In der JSP, habe ich zwei Tabellen für zwei verschiedene Arten von Benutzern (Administrator und Sekretärin) zu sehen. Diese Tabellen haben Kontrollkästchen zum Herunterladen mehrerer Dateien.Anwenden der Checkbox für zwei Tabellen in JSP mit <Anzeige: Tabelle>

Ich habe eine seltsame (ich denke) Situation, die nur eine Art von Benutzer (Administrator) ist, kann alle Kontrollkästchen aktivieren, indem Sie auf das Kontrollkästchen neben der ersten Tabellenspalte klicken.

Ich möchte Ihnen zuerst den Code über diese Tabelle zeigen.

<script type="text/javascript"> 
$(document).ready(function() { 
$("#clickAll").click(function() { 
    if($(this).is(':checked')) 
     { 
     $("input[name='chkdownload']").each(function() { 
      $(this).attr("checked",true); 
     }); 
     } 
     else 
     { 
     $("input[name='chkdownload']").each(function() { 
      $(this).attr("checked",false); 
     });   
     } 
    }); 
}); 
var countChecked = function() { 
    var n = $("input:checked").length; 
    if (n == 0) { 
     alert("Please click at least one record."); 
     return false; 
    } else { 
     return true; 
    } 

}; 
</script> 

<div class="content"> 
<s:form namespace="/DownloadFile" action="download_getSelectedFile" method="POST" enctype="multipart/form-data"> 

<!--for administrator users to view --> 
<div class="usrAdmin usrAccess" style="display:none"> 
<display:table name="${equipmentList}" class="its" uid="row" 
    sort="list" pagesize="10" requestURI="equipment_view" export="false" defaultsort="1" defaultorder="descending"> 
    <display:columntitle="<input type='checkbox' name='selectall' id='clickAll'/>"><s:checkbox theme="simple" name="chkdownload" fieldValue='%{#attr.row.recordId}' /></display:column> 
    <display:column property="equipName" title="Equipment Name" /> 
    <display:column property="equipLocation" title="Equipment Location" /> 
    <display:column property="equipOfficer" title="Equipment Officer" /> 
    </display:table> 
</div> 

    <!--for secretary users to view --> 
    <div class="usrSec usrAccess" style="display:none"> 
<!-- put row2 to make the table uid unique --> 
<display:table name="${equipmentList}" class="its" uid="row2" 
    sort="list" pagesize="10" requestURI="equipment_view" export="false" defaultsort="1" defaultorder="descending"> 
    <display:column title="<input type='checkbox' name='selectall' id='clickAll'/>"><s:checkbox theme="simple" name="chkdownload" fieldValue='%{#attr.row.recordId}' /></display:column> 
    <display:column property="equipName" title="Equipment Name" /> 
    <display:column property="equipLocation" title="Equipment Location" /> 
    <display:column property="equipOfficer" title="Equipment Officer" /> 
</display:table> 
</div> 

<input type="submit" value="Download Selected"/> 
</s:form> 
</div> 

Wenn ich das Programm ausführen, wenn ich Sekretär-Modus wechseln, ich auf die Checkbox in der Nähe des Kopfspalts, es nicht alle Kontrollkästchen aktiviert. Es zeigt nur ein Häkchen-Symbol in der Checkbox. Wenn ich jedoch in den Administratormodus wechsle, klicke ich auf das Kontrollkästchen, es können alle Kontrollkästchen aktiviert werden.

Am Anfang, ich denke, vielleicht vertippe ich den falschen Namen in jquery, aber ich überprüfe den Code, beide Tabelle sind die gleiche Eingabe "chkdownload" aufrufen.

Ich habe die Lösung von this und this Post gelesen, aber ich denke, mein Fall ist anders zu ihnen.

Welchen Teil habe ich falsch im Code gemacht? Es scheint kein Tippfehler zu sein. Andernfalls funktioniert das Kontrollkästchen im Administratormodus nicht.

Würde jemand mich bitte meinen Fehler wissen lassen?

aktualisieren

ich folgen Sie den Anweisungen vorschlagen durch @reporter. Ich kopiere den HTML-Quellcode vom Internet Explorer (IE). Ich sehe, dass mehr Code generiert wird und ich möchte es unten für Ihre Bewertung bitte zeigen. Vielen Dank.

<div class="content"> 

<form id="download_getSelectedFile" name="download_getSelectedFile" onsubmit="return(countChecked());beginDownload();" action="/RIDW/Download/download_getSelectedFile.action" method="POST" enctype="multipart/form-data"> 
<!--for administrator users to view --> 
<div class="usrAdmin usrAccess" style="display:none;"> 
<span class="pagebanner">2 records found, displaying all pages.</span> 
<span class="pagelinks">Page 1</span> 
<table id="row" class="its"> 
<thead> 
<tr> 
<th><input type='checkbox' name='selectall' id='clickAll'/></th> 
<th class="sortable"> 
<a href="equipment_view?d-16544-s=1&amp;d-16544-o=2&amp;d-16544-p=1">Equipment Name</a></th> 
<th class="sortable"> 
<a href="equipment_view?d-16544-s=2&amp;d-16544-o=2&amp;d-16544- 
p=1">Location</a></th> 
<th class="sortable sorted order2"> 
<a href="equipment_view?d-16544-s=3&amp;d-16544-o=2&amp;d-16544- 
p=1">Equipment Officer</a></th></tr></thead> 
<tbody> 
<tr class="odd"> 
<td><input type="checkbox" name="chkdownload" value="427b0a45dd714d95bd11374b5a2d56b4" id="download_getSelectedFile_chkdownload"/><input type="hidden" id="__checkbox_download_getSelectedFile_chkdownload" name="__checkbox_chkdownload" value="427b0a45dd714d95bd11374b5a2d56b4" /></td> 
<td>Equipment 001</td> 
<td>Location A-1</td> 
<td>Officer A</td></tr> 
<tr class="even"> 
<td><input type="checkbox" name="chkdownload" 
value="76f888d5bb3740aabef70c5f50bea7d9" 
id="download_getSelectedFile_chkdownload"/><input type="hidden" 
id="__checkbox_download_getSelectedFile_chkdownload" 
name="__checkbox_chkdownload" value="76f888d5bb3740aabef70c5f50bea7d9" /> 
</td> 
<td>Equipment 002</td> 
<td>Location A-2</td> 
<td >Officer S</td></tr> 
</tbody></table>  
</div> 

<!--for secretary users to view --> 
<div class="usrSec usrAccess" style="display:none;"> 
<span class="pagebanner">2 records found, displaying all pages.</span> 
<span class="pagelinks">Page 1</span> 
<!-- put row2 to make the table id unique --> 
<table id="row2" class="its"> 
<thead> 
<tr> 
<th><input type='checkbox' name='selectall' id='clickAll'/></th> 
<th class="sortable"> 
<a href="equipment_view?d-16544-s=1&amp;d-16544-o=2&amp;d-16544-p=1">Equipment Name</a></th> 
<th class="sortable"> 
<a href="equipment_view?d-16544-s=2&amp;d-16544-o=2&amp;d-16544-p=1">Location</a></th> 
<th class="sortable sorted order2"> 
<a href="equipment_view?d-16544-s=3&amp;d-16544-o=2&amp;d-16544-p=1">Equipment Officer</a></th></tr></thead> 
<tbody> 
<tr class="odd"> 
<td ><input type="checkbox" name="chkdownload" value="427b0a45dd714d95bd11374b5a2d56b4" id="download_getSelectedFile_chkdownload"/><input type="hidden" id="__checkbox_download_getSelectedFile_chkdownload" name="__checkbox_chkdownload" value="427b0a45dd714d95bd11374b5a2d56b4" /></td> 
<td >Equipment 001</td> 
<td >Location A-1</td> 
<td >Officer A</td></tr> 
<tr class="even"> 
<td ><input type="checkbox" name="chkdownload" value="76f888d5bb3740aabef70c5f50bea7d9" id="download_getSelectedFile_chkdownload"/><input type="hidden" id="__checkbox_download_getSelectedFile_chkdownload" name="__checkbox_chkdownload" value="76f888d5bb3740aabef70c5f50bea7d9" /></td> 
<td >Equipment 002</td> 
<td>Location A-2</td> 
<td >Officer S</td></tr> 
</tbody></table>  

</div> 
    <br> 
    <input type="submit" value="Download Selected"/>  
</form> 
</div> 

aktualisieren 2

Für Sekretär Tabelle, in jsp Code, habe ich row2 für uid und in HTML-Quellcode ich row2 für id setzen. Ich führe die Anwendung aus, diese Tabelle kann immer noch nicht alle Checkboxen überprüfen, während die andere Tabelle gut funktioniert.

Obwohl ich den Code in den Inhalt aktualisiert habe, extrahiere ich den genauen Code über den ID-Teil unten für Ihre schnelle Überprüfung bitte. Vielen Dank.

Der Code in jsp

<!--for administrator users to view --> 
<display:table name="${equipmentList}" class="its" uid="row" 
sort="list" pagesize="10" requestURI="equipment_view" export="false" defaultsort="1" defaultorder="descending"> 

<!--for secretary users to view --> 
<display:table name="${equipmentList}" class="its" uid="row2" 
sort="list" pagesize="10" requestURI="equipment_view" export="false" defaultsort="1" defaultorder="descending"> 

Der Code in HTML-Quellcode

<!--for administrator users to view --> 
<table id="row" class="its"> 

<!--for secretary users to view --> 
<table id="row2" class="its"> 
+0

Es scheint, dass Sie ein Problem auf der Client-Seite haben. Ersetzen Sie den serverseitigen Code durch den HTML-Code, den der Browser erhält. – reporter

+0

@reporter, danke für deinen Kommentar. Darf ich bitte eine Frage stellen?Meinst du, ich sollte ändern '' to '

'? – Learner

+0

Rufen Sie Ihre Webanwendung in Ihrem Browser an. Zeigen Sie den Quellcode dort und fügen Sie den HTML-Quellcode aus Ihren beiden Tabellen in Ihre Frage ein. Dann entfernen Sie den JSP-Code in Ihrem Post. – reporter

Antwort

0

nicht die beste Lösung, aber es funktioniert.

Kopieren Sie einfach die Funktion verwenden Sie einen anderen Namen, um zu definieren, welche Tabelle sie verwenden wird. Zum Beispiel

<display:columntitle="<input type='checkbox' name='selectall' id='clickAll_Admin'/>"><s:checkbox theme="simple" name="chkdownload_Admin" fieldValue='%{#attr.row.recordId}' /></display:column> 


    <display:columntitle="<input type='checkbox' name='selectall' id='clickAll_Sec'/>"><s:checkbox theme="simple" name="chkdownload_Sec" fieldValue='%{#attr.row.recordId}' /></display:column> 
+0

Eigentlich müssen Sie die Funktion nicht kopieren. Nur einzigartige ID-s. –