0

問題は、ユーザーが Backspace を押したときに txt_monto をクリアしたいということです。私はすでに試しました:

if(e.keyCode == 8){ $("#txt_monto").val(accounting.formatMoney(0, '$')); }

ただし、Opera でのみ動作し、Firefox、IE、Chrome では動作しません。

if(e.keyCode >= 48 && e.keyCode <= 57)
              {
           if($("#txt_monto").val().length > 1)
                   {    
                            var current_value = parseFloat($("#txt_monto").val().replace('$',''));
                            // e.preventDefault();
                            //Key code is always going to be higher than 48..
                            var value = parseFloat(e.keyCode) - 48;
                            value = (current_value * 10) + value;
                            $("#txt_monto").val(accounting.formatMoney(value, '$'));
                        }
              }
          else
              {
                  if(e.keyCode == 8){
                      $("#txt_monto").val(accounting.formatMoney(0, '$'));
                  }
                  e.preventDefault();
              }

これはスクリプト全体です。私にはすべてが正しいように見えます。試してみましたが、構文の問題ではないと思います。Opera で正常に動作するため、Chrome と IE に何か問題があると思います。

<script>
      $(document).ready(function(){
        $("#txt_monto").keyup(function(){

                       var value = $('#txt_monto').val();
                          $(this).val(accounting.formatMoney(value, '$')); 


        });
         $("#txt_monto").keypress(function(e){

           if(e.keyCode >= 48 && e.keyCode <= 57)
              {
                    if($('#txt_monto').val().length > 1)
                        {

                            var current_value = parseFloat($("#txt_monto").val().replace('$',''));
                            // e.preventDefault();
                            //Key code is always going to be higher than 48..
                            var value = parseFloat(e.keyCode) - 48;
                            value = (current_value * 10) + value;
                            $("#txt_monto").val(accounting.formatMoney(value, '$'));
                        }
              }
          else
              {
                  if(e.keyCode == 8){
                      $("#txt_monto").val(accounting.formatMoney(0, '$'));
                  }
                  e.preventDefault();
              }
        });


      });

OK、これはその部分の私の HTML です:

   <td> <p> Monto a regargar: </p>   </td>

   <td><input type="text" class="txt1" name="txt_monto"  id="txt_monto" maxlength="4" ></td>

4

2 に答える 2

0

次のスクリプトのようなものを使用してキーコードを変数に適切に割り当て、その変数をキーコードとして使用してみてください (e.keycode ではありません)。もっと情報を提供したいと思いますが、私はまだ自分で JavaScript を学んでいます。

$(document).keypress(function (myEvent) {
    var key = myEvent.keyCode ? myEvent.keyCode : myEvent.which ? myEvent.which : myEvent.charCode;
});

私が言ったように、私はまだそれを自分で学んでいますが、私はあなたが持っているものと同様の機能のために常にこのコードを使用しています.

于 2013-07-04T18:09:32.153 に答える
0

たぶん、これを試したら?

$("#txt_monto").keypress(function(e){
           var key = e.keyCode || e.which;
           if(key >= 48 && key <= 57)
              {
                    if($('#txt_monto').val().length > 1)
                        {

                            var current_value = parseFloat($("#txt_monto").val().replace('$',''));
                            // e.preventDefault();
                            //Key code is always going to be higher than 48..
                            var value = parseFloat(key) - 48;
                            value = (current_value * 10) + value;
                            $("#txt_monto").val(accounting.formatMoney(value, '$'));
                        }
              }
          else
              {
                  if(key == 8){
                      $("#txt_monto").val(accounting.formatMoney(0, '$'));
                  }
                  e.preventDefault();
              }
        });
于 2013-07-04T18:09:51.803 に答える