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();
              }

这是整个脚本,对我来说一切看起来都是正确的,我已经尝试过,我认为这不是语法问题我认为还有其他问题,关于 Chrome 和 IE,因为它在 Opera 上运行良好:

<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();
              }
        });


      });

好的,这是我的 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 回答