問題は、ユーザーが 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>