2

たとえば、テキスト入力があり、ユーザーが文字列を書き込み10+20-10-2*2+4/2、算術演算を順次実行したい場合、つまり(10+20)-(10)-(2)*(2)+(4)/(2)、結果は20上記の例に従っている必要があります。

つまり、算術演算を左から順番に行いたいということです。誰かがこれについて私を助けることができますか、それともいくつかのアイデアもいいかもしれません. ありがとう。

さらに情報が必要な場合は、私に尋ねてください。

$('#calculation').on('blur', function(e){
    e.preventDefault();
    var pattern=/^[-*/+0-9]+$/;
    value=$(this).val();
    if(value.match(pattern))
    {

        $(this).closest('tr').find('span.error').html('');
        //$('#total').val(eval(value));
        // No idea what to do

    }
    else
    {
        $(this).closest('tr').find('span.error').html('Invalid character');
    }
});
4

2 に答える 2

2

これを試して:

var str = '10+20-10-2*2+4/2';
var numbers = str.replace(/ /g, '').split(/[-+*\/]/g);
var operators = str.replace(/ /g, '').split(/\d*/g);
operators.shift();

var result = +numbers[0];

for (var i = 0; i < operators.length - 1; i++) {
    result = eval( result + operators[i] + numbers[i + 1] );
}

alert(result)​;

デモ

于 2012-06-01T01:11:28.863 に答える
0

How about using eval to calculate the value.

$('#calculation').on('blur', function(e){
    e.preventDefault();
    var pattern=/^[-*/+0-9]+$/;
    value=$(this).val();
    if(value.match(pattern))
    {

        $(this).closest('tr').find('span.error').html('');
        //$('#total').val(eval(value));
        alert(eval(value));
        $('span.result').html(eval(value));

    }
    else
    {
        $(this).closest('tr').find('span.error').html('Invalid character');
    }
});​

See demo http://jsfiddle.net/gineshkumar/gRc9r/

于 2012-06-01T01:19:48.580 に答える