У меня есть 3 входа, когда два числа умножаются, а результат записывается на третьем входе. Однако мне нужно исключить десятичные знаки, когда это совершенно не нужно.
<input type="text" name="input1" id="input1" value="" size="4" class="inputt" />
<br>
<input type="text" name="input2" id="input2" value="" size="4" class="inputt" />
<br>
<input type="text" readonly="readonly" name="input3" id="input3" value="" size="4" class="inputt" />
Например; 150,00 следует указывать как 150, но 150.50 должно оставаться таким, каким оно есть.
А также, когда результат записывается после умножения, я должен щелкнуть по вводу только для чтения, чтобы результат был округленным. Мне нужно окончательное указание номера результата, которое должно произойти без необходимости нажатия. Чтобы лучше понять, напишите 12.5 к первому, 12.1123 ко второму и посмотрите результат.
$(document).ready(function () {
$("#input1, #input2").change(function() {
$("#input3").val($("#input1").val() * $("#input2").val());
var num =$("#input3").val();
num = num.toFixed(2);
});
});
$( function() {
$('#input1').keyup(function(){
if($(this).val().indexOf('.')!=-1){
if($(this).val().split(".")[1].length > 2){
if( isNaN( parseFloat( this.value ) ) ) return;
this.value = parseFloat(this.value).toFixed(2);
}
}
return this;
});
});
$( function() {
$('#input2').keyup(function(){
if($(this).val().indexOf('.')!=-1){
if($(this).val().split(".")[1].length > 5){
if( isNaN( parseFloat( this.value ) ) ) return;
this.value = parseFloat(this.value).toFixed(2);
}
}
return this;
});
});
$('input#input3').blur(function(){
var num = parseFloat($(this).val());
var cleanNum = num.toFixed(2);
$(this).val(cleanNum);
});
Вот коды http://jsfiddle.net/mLfkd/2/
Причина, по которой вам нужно снова щелкнуть, заключается в том, что вы используете .blur
, что происходит только после того, как #input3
теряет фокус. Это избыточно, поэтому я объединил эту часть с .change
на #input1
и #input2
и использовал трюк модуля здесь, чтобы проверить, имеет ли он десятичные знаки или нет:
$(document).ready(function () {
$("#input1, #input2").change(function () {
var num = parseFloat($("#input1").val()) * parseFloat($("#input2").val());
if (num % 1 != 0) {
num = num.toFixed(2);
} else {
num = parseInt(num);
}
$("#input3").val(num);
});
});
$(function () {
$('#input1').keyup(function () {
if ($(this).val().indexOf('.') != -1) {
if ($(this).val().split(".")[1].length > 2) {
if (isNaN(parseFloat(this.value))) return;
this.value = parseFloat(this.value).toFixed(2);
}
}
return this;
});
});
$(function () {
$('#input2').keyup(function () {
if ($(this).val().indexOf('.') != -1) {
if ($(this).val().split(".")[1].length > 5) {
if (isNaN(parseFloat(this.value))) return;
this.value = parseFloat(this.value).toFixed(2);
}
}
return this;
});
});
Рабочая скрипка: http://jsfiddle.net/FMpBz/1/
var f1 = parseFloat(150.00).toFixed(2);
var f2 = parseFloat(150.50).toFixed(2);
function cut_it(a){
var int_val = parseInt(a);
var res = a / int_val ;
if (res > 1) return a;
return int_val;
}
// got the point?
alert ( f1 + " -> " + cut_it (f1) + ", but "+ f2 + " -> " + cut_it (f2) );
Math.floor(num * 100) / 100