2016-12-31 3 views
0

行の最初のセルの値にテーブルの2番目のセルの値が乗算されるテーブルを作成しようとしています(同じ行)。入力ボックスの値をテーブル内の固定値に掛けます(HTML)

私は2つの入力ボックスがある場合、私はこの作品を作った。しかし、私は1つの入力ボックスと1つの固定値がある場合は動作しません。ここで働くスニペットです:

$(document).ready(function() { 
 
     $(".txtMult input").keyup(multInputs); 
 

 
     function multInputs() { 
 
      var mult = 0; 
 
      $("tr.txtMult").each(function() { 
 
       var $val1 = $('.val1', this).val(); 
 
       var $val2 = $('.val2', this).val(); 
 
       var $total = ($val1 * 1) * ($val2 * 1) - ($val1 * 1) 
 
       $('.multTotal',this).text($total.toPrecision(2)); 
 
       mult += $total; 
 
      }); 
 
      $("#grandTotal").text(mult); 
 
     } 
 
    });

 
h1{ 
 
    font-size: 30px; 
 
    color: #fff; 
 
    text-transform: uppercase; 
 
    font-weight: 300; 
 
    text-align: center; 
 
    margin-bottom: 15px; 
 
} 
 
table{ 
 
    width:100%; 
 
    table-layout: fixed; 
 
} 
 
.tbl-header{ 
 
    background-color: rgba(255,255,255,0.3); 
 
} 
 
.tbl-content{ 
 
    height:300px; 
 
    overflow-x:auto; 
 
    margin-top: 0px; 
 
    border: 1px solid rgba(255,255,255,0.3); 
 
} 
 
th{ 
 
    padding: 20px 15px; 
 
    text-align: left; 
 
    font-weight: 500; 
 
    font-size: 12px; 
 
    color: #fff; 
 
    text-transform: uppercase; 
 
} 
 
td{ 
 
    padding: 15px; 
 
    text-align: left; 
 
    vertical-align:middle; 
 
    font-weight: 300; 
 
    font-size: 12px; 
 
    color: #fff; 
 
    border-bottom: solid 1px rgba(255,255,255,0.1); 
 
} 
 

 

 
/* demo styles */ 
 

 
@import url(http://fonts.googleapis.com/css?family=Roboto:400,500,300,700); 
 
body{ 
 
    background: #fb887c; 
 
    font-family: 'Roboto', sans-serif; 
 
} 
 
section{ 
 
    margin: 50px; 
 
} 
 

 

 
*, 
 
*:after, 
 
*::before { 
 
    -webkit-box-sizing: border-box; 
 
    -moz-box-sizing: border-box; 
 
    box-sizing: border-box; 
 
} 
 

 
.ac-custom { 
 
\t padding: 0 1em; 
 
\t max-width: 900px; 
 
\t margin: 0 auto; 
 
} 
 

 
.ac-custom h2 { 
 
\t font-size: 1em; 
 
\t font-weight: 300; 
 
\t padding: 0 0 0.5em; 
 
\t margin: 0 0 30px; 
 
\t color:#000; 
 
} 
 

 
.ac-custom ul, 
 
.ac-custom ol { 
 
\t list-style: none; 
 
\t padding: 0; 
 
\t margin: 0 auto; 
 
\t max-width: 800px; 
 
} 
 

 
.ac-custom li { 
 
\t margin: 0 auto; 
 
\t padding: 0.5em 0; 
 
\t position: relative; 
 
} 
 

 
.ac-custom label { 
 
\t display: inline-block; 
 
\t position: relative; 
 
\t font-size: 1em; 
 
\t padding: 0 0 0 80px; 
 
\t vertical-align: top; 
 
\t color: #000; 
 
\t cursor: pointer; 
 
\t -webkit-transition: color 0.3s; 
 
\t transition: color 0.3s; 
 
} 
 

 
.ac-custom input[type="checkbox"], 
 
.ac-custom input[type="radio"], 
 
.ac-custom label::before { 
 
\t width: 20px; 
 
\t height: 20px; 
 
\t top: 50%; 
 
\t left: 0; 
 
\t margin-top: -12px; 
 
\t position: absolute; 
 
\t cursor: pointer; 
 
} 
 

 
.ac-custom input[type="checkbox"], 
 
.ac-custom input[type="radio"] { 
 
\t opacity: 0; 
 
\t -webkit-appearance: none; 
 
\t display: inline-block; 
 
\t vertical-align: middle; 
 
\t z-index: 100; 
 
} 
 

 
.ac-custom label::before { 
 
\t content: ''; 
 
\t border: 1px solid #000; 
 
\t -webkit-transition: opacity 0.3s; 
 
\t transition: opacity 0.3s; 
 
} 
 

 
.ac-radio label::before { 
 
\t border-radius: 50%; 
 
} 
 

 
.ac-custom input[type="checkbox"]:checked + label, 
 
.ac-custom input[type="radio"]:checked + label { 
 
\t color: #fff; 
 
} 
 

 
.ac-custom input[type="checkbox"]:checked + label::before, 
 
.ac-custom input[type="radio"]:checked + label::before { 
 
\t opacity: 0.8; 
 
} 
 

 
/* General SVG and path styles */ 
 

 
.ac-custom svg { 
 
\t position: absolute; 
 
\t width: 20px; 
 
\t height: 20px; 
 
\t top: 50%; 
 
\t margin-top: -12px; 
 
\t left: 0px; 
 
\t pointer-events: none; 
 
} 
 

 
.ac-custom svg path { 
 
\t stroke: #fdfcd3; 
 
\t stroke-width: 13px; 
 
\t stroke-linecap: round; 
 
\t stroke-linejoin: round; 
 
\t fill: none; 
 
} 
 

 
/* Specific input, SVG and path styles */ 
 

 
/* Circle */ 
 
.ac-circle input[type="checkbox"], 
 
.ac-circle input[type="radio"], 
 
.ac-circle label::before { 
 
\t width: 30px; 
 
\t height: 30px; 
 
\t margin-top: -15px; 
 
\t left: 10px; 
 
\t position: absolute; 
 
} 
 

 
.ac-circle label::before { 
 
\t background-color: #fff; 
 
\t border: none; 
 
} 
 

 
.ac-circle svg { 
 
\t width: 70px; 
 
\t height: 70px; 
 
\t margin-top: -35px; 
 
\t left: -10px; 
 
} 
 

 
.ac-circle svg path { 
 
\t stroke-width: 5px; 
 
} 
 

 
/* Box Fill */ 
 
.ac-boxfill svg path { 
 
\t stroke-width: 8px; 
 
} 
 

 
/* Swirl */ 
 
.ac-swirl svg path { 
 
\t stroke-width: 8px; 
 
} 
 

 
/* List */ 
 
.ac-list ol { 
 
\t list-style: decimal; 
 
\t list-style-position: inside; 
 
} 
 

 
.ac-list ol li { 
 
\t font-size: 2em; 
 
\t padding: 1em 1em 0 2em; 
 
\t text-indent: -40px; 
 
} 
 

 
.ac-list ol li label { 
 
\t font-size: 0.5em; 
 
\t text-indent: 0; 
 
\t padding-left: 30px; 
 
} 
 

 
.ac-list label::before { 
 
\t display: none; 
 
} 
 

 
.ac-list svg { 
 
\t width: 100%; 
 
\t height: 80px; 
 
\t left: 0; 
 
\t top: 1.2em; 
 
\t margin-top: 0px; 
 
} 
 

 
.ac-list svg path { 
 
\t stroke-width: 4px; 
 
} 
 

 
.row { 
 
    margin-left: -15px; 
 
    margin-right: -15px; 
 
} 
 
.col-sm-4 { 
 
    position: relative; 
 
    min-height: 1px; 
 
    padding-left: 15px; 
 
    padding-right: 15px; 
 
    padding-bottom: 30px; 
 
} 
 

 
@media (min-width: 768px) { 
 
    .col-sm-4 { 
 
    float: left; 
 
    } 
 

 
    .col-sm-4 { 
 
    width: 33.33333333%; 
 
    } 
 
    
 
.filter-columns { 
 
\t background-color:#fdb5ad; 
 
} 
 
    
 
.filter-columns-alt { 
 
\t background-color:#fecbc6; 
 
} 
 
<script src="https://code.jquery.com/jquery-1.10.2.js"></script> 
 

 
    <tbody> 
 
     <tr id="Memory1" class="part_detail txtMult"> 
 
      <td class="stake"><input class="val1"/></td> 
 
      <td class="odds"><input class="val2"/></td> 
 
\t \t \t <td class="profit"><span class="multTotal">0.00</span></td> 
 
     </tr> 
 
     </tbody>

は、と私はHTMLを変更する場合:

<tbody> 
<tr id="Memory1" class="part_detail txtMult"> 
    <td class="stake"><input class="val1"/></td> 
    <td class="odds">2.2</td> 
    <td class="profit"><span class="multTotal">0.00</span></td> 
</tr> 

+0

テキストを使用する必要があり()の代わりにval() 'var $ val2 = $( '。val2'、this).text();' –

答えて

1
もはやのために存在する入力フィールド、したがって無価値があるようにあなたのJavaScriptコードにここに)代わりのval(のテキストを()を使用してはならない

同じ。代わりにvar $val2 = $('.val2', this).val();

使用var $val2 = $('.odds', this).text();子供がタグ内動的であり、

<td class="odds"><input class="val2"/></td>または<td class="odds">2.2</td>

両方にすることができた場合は、正しい値に

var val2 = $('.odds .val2')?$('.odds .val2').val():$('.odds').text();

を取得するために、これを試すことができます
1

だけtext()の代わりval()を使用しています。

val() のみvalue特性を有するフォームコントロールのために使用される

1

要素ca N個の入力又はスパンであり、あなたが処理する必要の両方あなたは未定義に対して値をテストすることができる:

var $val2 = $('.val2', this).val(); 
if ($val2 === undefined) 
    $val2 = $('.val2', this).text(); 

例:

$(document).ready(function() { 
 
    $(".txtMult input").keyup(multInputs); 
 

 
    function multInputs() { 
 
    var mult = 0; 
 
    $("tr.txtMult").each(function() { 
 
     var $val1 = $('.val1', this).val(); 
 
     var $val2 = $('.val2', this).val(); 
 
     if ($val2 === undefined) 
 
     $val2 = $('.val2', this).text(); 
 
     var $total = ($val1 * 1) * ($val2 * 1) - ($val1 * 1) 
 
     $('.multTotal',this).text($total.toPrecision(2)); 
 
     mult += $total; 
 
    }); 
 
    $("#grandTotal").text(mult); 
 
    } 
 
});
h1{ 
 
    font-size: 30px; 
 
    color: #fff; 
 
    text-transform: uppercase; 
 
    font-weight: 300; 
 
    text-align: center; 
 
    margin-bottom: 15px; 
 
} 
 
table{ 
 
    width:100%; 
 
    table-layout: fixed; 
 
} 
 
.tbl-header{ 
 
    background-color: rgba(255,255,255,0.3); 
 
} 
 
.tbl-content{ 
 
    height:300px; 
 
    overflow-x:auto; 
 
    margin-top: 0px; 
 
    border: 1px solid rgba(255,255,255,0.3); 
 
} 
 
th{ 
 
    padding: 20px 15px; 
 
    text-align: left; 
 
    font-weight: 500; 
 
    font-size: 12px; 
 
    color: #fff; 
 
    text-transform: uppercase; 
 
} 
 
td{ 
 
    padding: 15px; 
 
    text-align: left; 
 
    vertical-align:middle; 
 
    font-weight: 300; 
 
    font-size: 12px; 
 
    color: #fff; 
 
    border-bottom: solid 1px rgba(255,255,255,0.1); 
 
} 
 

 

 
/* demo styles */ 
 

 
@import url(http://fonts.googleapis.com/css?family=Roboto:400,500,300,700); 
 
body{ 
 
    background: #fb887c; 
 
    font-family: 'Roboto', sans-serif; 
 
} 
 
section{ 
 
    margin: 50px; 
 
} 
 

 

 
*, 
 
*:after, 
 
*::before { 
 
    -webkit-box-sizing: border-box; 
 
    -moz-box-sizing: border-box; 
 
    box-sizing: border-box; 
 
} 
 

 
.ac-custom { 
 
    padding: 0 1em; 
 
    max-width: 900px; 
 
    margin: 0 auto; 
 
} 
 

 
.ac-custom h2 { 
 
    font-size: 1em; 
 
    font-weight: 300; 
 
    padding: 0 0 0.5em; 
 
    margin: 0 0 30px; 
 
    color:#000; 
 
} 
 

 
.ac-custom ul, 
 
.ac-custom ol { 
 
    list-style: none; 
 
    padding: 0; 
 
    margin: 0 auto; 
 
    max-width: 800px; 
 
} 
 

 
.ac-custom li { 
 
    margin: 0 auto; 
 
    padding: 0.5em 0; 
 
    position: relative; 
 
} 
 

 
.ac-custom label { 
 
    display: inline-block; 
 
    position: relative; 
 
    font-size: 1em; 
 
    padding: 0 0 0 80px; 
 
    vertical-align: top; 
 
    color: #000; 
 
    cursor: pointer; 
 
    -webkit-transition: color 0.3s; 
 
    transition: color 0.3s; 
 
} 
 

 
.ac-custom input[type="checkbox"], 
 
.ac-custom input[type="radio"], 
 
.ac-custom label::before { 
 
    width: 20px; 
 
    height: 20px; 
 
    top: 50%; 
 
    left: 0; 
 
    margin-top: -12px; 
 
    position: absolute; 
 
    cursor: pointer; 
 
} 
 

 
.ac-custom input[type="checkbox"], 
 
.ac-custom input[type="radio"] { 
 
    opacity: 0; 
 
    -webkit-appearance: none; 
 
    display: inline-block; 
 
    vertical-align: middle; 
 
    z-index: 100; 
 
} 
 

 
.ac-custom label::before { 
 
    content: ''; 
 
    border: 1px solid #000; 
 
    -webkit-transition: opacity 0.3s; 
 
    transition: opacity 0.3s; 
 
} 
 

 
.ac-radio label::before { 
 
    border-radius: 50%; 
 
} 
 

 
.ac-custom input[type="checkbox"]:checked + label, 
 
.ac-custom input[type="radio"]:checked + label { 
 
    color: #fff; 
 
} 
 

 
.ac-custom input[type="checkbox"]:checked + label::before, 
 
.ac-custom input[type="radio"]:checked + label::before { 
 
    opacity: 0.8; 
 
} 
 

 
/* General SVG and path styles */ 
 

 
.ac-custom svg { 
 
    position: absolute; 
 
    width: 20px; 
 
    height: 20px; 
 
    top: 50%; 
 
    margin-top: -12px; 
 
    left: 0px; 
 
    pointer-events: none; 
 
} 
 

 
.ac-custom svg path { 
 
    stroke: #fdfcd3; 
 
    stroke-width: 13px; 
 
    stroke-linecap: round; 
 
    stroke-linejoin: round; 
 
    fill: none; 
 
} 
 

 
/* Specific input, SVG and path styles */ 
 

 
/* Circle */ 
 
.ac-circle input[type="checkbox"], 
 
.ac-circle input[type="radio"], 
 
.ac-circle label::before { 
 
    width: 30px; 
 
    height: 30px; 
 
    margin-top: -15px; 
 
    left: 10px; 
 
    position: absolute; 
 
} 
 

 
.ac-circle label::before { 
 
    background-color: #fff; 
 
    border: none; 
 
} 
 

 
.ac-circle svg { 
 
    width: 70px; 
 
    height: 70px; 
 
    margin-top: -35px; 
 
    left: -10px; 
 
} 
 

 
.ac-circle svg path { 
 
    stroke-width: 5px; 
 
} 
 

 
/* Box Fill */ 
 
.ac-boxfill svg path { 
 
    stroke-width: 8px; 
 
} 
 

 
/* Swirl */ 
 
.ac-swirl svg path { 
 
    stroke-width: 8px; 
 
} 
 

 
/* List */ 
 
.ac-list ol { 
 
    list-style: decimal; 
 
    list-style-position: inside; 
 
} 
 

 
.ac-list ol li { 
 
    font-size: 2em; 
 
    padding: 1em 1em 0 2em; 
 
    text-indent: -40px; 
 
} 
 

 
.ac-list ol li label { 
 
    font-size: 0.5em; 
 
    text-indent: 0; 
 
    padding-left: 30px; 
 
} 
 

 
.ac-list label::before { 
 
    display: none; 
 
} 
 

 
.ac-list svg { 
 
    width: 100%; 
 
    height: 80px; 
 
    left: 0; 
 
    top: 1.2em; 
 
    margin-top: 0px; 
 
} 
 

 
.ac-list svg path { 
 
    stroke-width: 4px; 
 
} 
 

 
.row { 
 
    margin-left: -15px; 
 
    margin-right: -15px; 
 
} 
 
.col-sm-4 { 
 
    position: relative; 
 
    min-height: 1px; 
 
    padding-left: 15px; 
 
    padding-right: 15px; 
 
    padding-bottom: 30px; 
 
} 
 

 
@media (min-width: 768px) { 
 
    .col-sm-4 { 
 
    float: left; 
 
    } 
 

 
    .col-sm-4 { 
 
    width: 33.33333333%; 
 
    } 
 

 
    .filter-columns { 
 
    background-color: #fdb5ad; 
 
    } 
 

 
    .filter-columns-alt { 
 
    background-color: #fecbc6; 
 
    } 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<table> 
 
    <tbody> 
 
    <tr id="Memory1" class="part_detail txtMult"> 
 
     <td class="stake"><input class="val1"/></td> 
 
     <td class="odds"><input class="val2"/></td> 
 
     <td class="profit"><span class="multTotal">0.00</span></td> 
 
    </tr> 
 
    <tr id="Memory2" class="part_detail txtMult"> 
 
     <td class="stake"><input class="val1"/></td> 
 
     <td class="odds">2.2</td> 
 
     <td class="profit"><span class="multTotal">0.00</span></td> 
 
    </tr> 
 
    </tbody> 
 
</table>

関連する問題