1

たとえば、ユーザーが数字の1を入力すると、テキストボックスにメッセージが表示されるようにしようとしています。次に、この商品は 5 の倍数でのみ入手可能であることを示すポップアップが表示されます。

これが私のコードです。

<script language="JavaScript">
function chk_boxquantity(inField) {
    step3_submit_disable();

    var fVal = inField.value;
    var fBoxQuantity = 5;

    if (mod(fVal, fBoxQuantity) != 5) {
        alert('This product is only available in multiples of '+fBoxQuantity);
        inField.value = Math.ceil(fVal/fBoxQuantity)*fBoxQuantity;
        setTimeout(function() {
            inField.focus();inField.select();gAutoBlur = false;
        }, 10);
    }

    step3_submit_enable();
}
</script>

ここにテキストフィールドがあります。

<input type="text" onkeypress="return handleEnter(this, event);" 
onblur="chk_boxquantity(this);" name="qty[<?php echo $card['id']; ?>]" 
size="3" />

したがって、ユーザーがどこをクリックしても、メッセージがポップアップ表示されます。これは機能していませんが、なぜですか?

ありがとう、

ヨナ

4

3 に答える 3

1

mod 操作の残りを確認したい場合、それが 0 より大きい場合は、5 で割り切れませんでした

// mod
10 % 5 === 0

// div
10 / 5 === 2

!= 5したがって、に変更する必要があります!= 0

于 2012-10-04T08:20:47.997 に答える
1

コードmod()% operator DEMOに変更します

から

 if (mod(fVal, fBoxQuantity) != 5)

  if ((fVal % fBoxQuantity) != 0) 

完全な関数は次のようになります

function chk_boxquantity(inField)
{
    var fVal = inField.value;
    var fBoxQuantity = 5;

    if ((fVal % fBoxQuantity) !== 0)
    {
     alert('This product is only available in multiples of '+fBoxQuantity); 
      inField.value = Math.ceil(fVal/fBoxQuantity)*fBoxQuantity ;
    }

}

必要なコードのみが表示されます。

于 2012-10-04T08:20:18.947 に答える
1

変更してみてください:

if (mod(fVal, fBoxQuantity) != 5) {

に:

if ((fVal % fBoxQuantity) != 0) {

モジュラス演算子の説明については、こちらを参照してください。

于 2012-10-04T08:20:26.177 に答える