-2

私はJavascriptを使用して、後で合計を計算するために使用される非表示のフォームフィールドの値を更新しています。これは正常に機能していましたが、何か奇妙なことが起こっているようで、何を解決するか迷っています。

 <input type="hidden" name="membership[<?php echo $row_id; ?>][total]" class="<?php echo $row_id; ?>total" value="<?php echo $social_prices[$row['membership']]; ?>">

オブジェクト全体を console.log にすると、合計関数で次のようになります。

 <input type="hidden" name="membership[1][total]" class="1total" value="43.5">

しかし、値を取得すると、フィールドの元の値である 24 が得られます。そのため、更新された値ではなく元の値を使用して合計が計算されます...

これがconsole.logのやり方です。

console.log(this);
console.log((this.value));

これは私が値を更新する方法です:

$('.'+membership+'total').val(total);

その直後にこの行を実行すると、正しい値が返されます。

alert($('.'+membership+'total').val());

しかし、関数全体を試してみると、ここですべてがうまくいきません。関数のコードの一部です。本当に長いので、すべてを投稿しません。

   var total = 0;
   $('input:hidden').each(function () {
   // I'm using this to make sure I get only the field I want to add together
  var result = name.match(/total/g);
  if((result)){
     console.log(this);
     console.log((this.value));
     total = total + parseFloat((this).value);
   } 
   });
4

2 に答える 2

0
$('.'+membership+'total').attr('defaultValue', 'newValue');

からのデフォルト値を変更します。

それ以外は、.valはDOMで完全に機能します

于 2013-02-28T11:45:52.803 に答える
0

見つからない理由は、おそらくクラス名が無効であるためです。数字で始まっていますが、これは許可されていません。クラス名の制限は次のとおりです。

命名規則:

A ~ Z または a ~ z の文字で始まる必要があります
後に続く文字 (A-Za-z)、数字 (0-9)、ハイフン ("-")、アンダースコア ("_")
HTML では、すべての値で大文字と小文字が区別されません

ソース: http://www.w3schools.com/tags/att_global_class.asp

解決策は、単語と数字を入れ替えることです: class="total1"。このようにして、名前は有効ですが、同じ情報を識別子に入れることができます。

于 2013-03-26T15:09:51.847 に答える