0

私はjQueryを初めて使用するため、ユーザーが2つのテキストボックスに配置した内容に基づいて計算を作成する必要があります。

私のフォームは次のようになります。

<tr>
      <td with='110'>&pound; $ProductCostEach</td>
      <td with='110'>Per tile</td>
      <td width='55'>
            <input type='hidden' name='pid' id='pid' value='$ProductID' />
            <input name='quantity' class='quantity' type='text' size='1' maxlength='4' value='1' style='width:40px;' />
      </td>
      <td width='110'>
            <button type='submit' class='red'><span class='buy'>Add to basket</span></button>
      </td>
</tr><tr>
 <td with='110'>&pound; $ProductCostPerMeter</td>
 <td with='110'>Per Meter $TileSize</td>
 <td width='55'>
            <input type='hidden' name='pid' id='pid' value='$ProductID' />
            <input name='msq' class='msq' type='text' size='1' maxlength='4' value='1' style='width:40px;' />
      </td>
      <td width='110'>
            <button type='submit' class='red'><span class='buy'>Add to basket</span></button>
      </td>
</tr>

ここで、ユーザーが.msqのクラスを使用して入力ボックスに値を入力すると、計算が必要になるため、キーアップイベントを記述しました。

function roundNumber(num, dec) {
      var result = Math.round(num*Math.pow(10,dec))/Math.pow(10,dec);
      return result;
}

var convMultiplier
convMultiplier =  0.0625

$('.msq').bind('keyup', function(){
      var qty_text_box = $(this).parent().parent().parent().find('.quantity');

      qty_text_box.value(roundNumber($(this).value * convMultiplier, 2));
});

しかし、入力ボックスの値を取得するだけで問題が発生します。var qty_text_box = $(this).parent()。parent()。parent()。find('。quantity');の後にalert(qty_text_box.value())を追加した場合 「UncaughtTypeError:Object [object Object] has nomethod'value'」というエラーが表示されます

しかし、問題が何であるかを理解するのに苦労しています...

よろしくお願いします。

ダニアン

4

1 に答える 1

0

parent() jquery 呼び出しの文字列が正しい要素を見つけているようには見えません。同じページに複数の数量入力がない場合は、ID を指定してそのように参照する必要があります。

ページに複数の数量入力がある場合は、クリックされているボタンと入力を親要素内 (おそらく同じ行) にグループ化して、作業を容易にし、 $(this).parents( のようなもので見つける必要があります。 '.parentEl').find('.数量')

別の方法として、 $(this).closest('.quantity') を使用して入力を取得することもできますが、HTML をさらに表示しないと、それが確実に機能するかどうかわかりません。

EDIT また、 .value の 2 回目の使用には、括弧 ( .value() ) が必要です。

于 2012-05-03T18:12:34.613 に答える