我正在使用 grails 构建发票,而对于动态计算,我正在使用 jquery。
我不知道,这可能不是一个好的解决方案,而且我不适合 javascript。可能有人可以帮助我,我们开始:
<thead>
<tr>
<g:sortableColumn style="width: 20px" property="id" title="${message(code: 'packet.id.label', default: 'Id')}" />
<g:sortableColumn style="width: 10px" property="anzahl" title="${message(code: 'packet.anzahl.label', default: 'Anzahl')}" />
<th><g:message style="width: 250px" code="packet.artikel.label" default=" Artikel " /></th>
<th><g:message code="packet.artikel.label" default=" Steuer in % " /></th>
<th><g:message code="packet.artikel.label" default=" Preis pro Stück in € " /></th>
<th><g:message code="packet.artikel.label" default=" Preis Gesammt in € " /></th>
</tr>
</thead>
<tbody>
<g:each in="${packetInstanceList}" status="i" var="packetInstance">
<tr class="${(i % 2) == 0 ? 'odd' : 'even'}">
<td><g:link controller="packet" action="show" id="${packetInstance.id}">${fieldValue(bean: packetInstance, field: "id")}</g:link></td>
<td><input name="q" class="st" type="text" style="background-color:transparent;border:0px solid white;" value="${fieldValue(bean: packetInstance, field: "anzahl")}" onclick="if (this.value=='Search') {this.value = '';}" readonly="true"/>
<!-- ${fieldValue(bean: packetInstance, field: "anzahl")} -->
</td>
<td nowrap>${fieldValue(bean: packetInstance, field: "artikel")}</td>
创建一个包含多行的 html
<tr class="even">
<td><a href="/test/packet/show/17">17</a></td>
<td><input name="q" class="st" type="text" style="background-color:transparent;border:0px solid white;" value="1,222" onclick="if (this.value=='Search') {this.value = '';}" readonly="true"/>
<!-- 1,222 -->
</td>
<td nowrap> Blueray,Arthouse </td>
<td> <input type="text" style="background-color:transparent;border:0px solid white;" class="input-steuer" value="19"/> </td>
<td> <input type="text" style="background-color:transparent;border:0px solid white;" class="input-value" /> </td>
<td> <input type="text" style="background-color:transparent;border:0px solid white;" class="output-value" readonly />
</td>
</tr>
<tr class="odd">
<td><a href="/test/packet/show/18">18</a></td>
<td><input name="q" class="st" type="text" style="background-color:transparent;border:0px solid white;" value="100" onclick="if (this.value=='Search') {this.value = '';}" readonly="true"/>
<!-- 100 -->
</td>
<td nowrap> Blueray,Arthouse </td>
<td> <input type="text" style="background-color:transparent;border:0px solid white;" class="input-steuer" value="19"/> </td>
<td> <input type="text" style="background-color:transparent;border:0px solid white;" class="input-value" /> </td>
<td> <input type="text" style="background-color:transparent;border:0px solid white;" class="output-value" readonly />
</td>
</tr>
<td> <input type="text" style="background-color:transparent;border:0px solid white;" class="input-steuer" value="19"/> </td>
<td> <input type="text" style="background-color:transparent;border:0px solid white;" class="input-value" /> </td>
<td> <input type="text" style="background-color:transparent;border:0px solid white;" class="output-value" readonly />
</td>
</tr>
</g:each>
如您所见,这些行具有相同的类。
这是jquery代码:
$(document).ready(function() {
$(".input-value").keyup(function() {
// var output = $(".output-value");
var test = 0;
$('.input-value').each(function() {
var value = parseFloat($(this).val());
var value3 = parseFloat($(".st").val());
var value2 = parseFloat($(".input-steuer").val());
//output.val(((value - value * value2/100)*value3).toFixed(2));
score = ((value - value * value2/100)*value3);
score = score.toFixed(2);
//output.val(score);
test+=score;
});
$(".output-value").val(test);
});
});
这仅计算第一行而不是每一行,我希望每一行都有一个输出和所有输出的总和,但我不习惯 javascript...
感觉很简单,但不适合我。
谢谢你的时间