0

私は次のHTMLで作業しています

Level 1: <input type="text" name="benefit_std_level1" maxlength="5" value="0.0" onblur="noSpaceTest();float_5_2_percent(this);" style="width:40px;" class="input nospace">%<br />
Level 2: <input type="text" name="benefit_std_level2" maxlength="5" value="0.0" onblur="noSpaceTest();float_5_2_percent(this);" style="width:40px;" class="input40 nospace">%<br />
Level 3: <input type="text" name="benefit_std_level3" maxlength="5" value="0.0" onblur="noSpaceTest();float_5_2_percent(this);" style="width:40px;" class="input nospace">%<br />   

ユーザーが 3 つの「レベル」フィールドのいずれかにスペースを入力すると、データベースでエラーが発生します。したがって、次のスクリプトを使用してスペースをチェックし、値をデフォルトの「0.0」に戻します。

jQuery:

function noSpaceTest(){
    $('.nospace').each(function(){
        if ($('.nospace').val() == ' '){
            $('.nospace').val('0.0');
        }
    });
}

もともと、私が開発しているサイトでは、これは機能しましたが、最初のフィールドのみでした (onBlur はスペースをチェックして見つけ、0.0 に置き換えます)。しかし、今は JSFiddle で機能させることができません (リンクを参照)。下)

http://jsfiddle.net/pMkYg/

明らかな何かが欠けているのではないかと心配していますが、解決に近づいていません。誰かが提供できる洞察を持っていますか?

4

6 に答える 6

4

インライン js を削除し、change代わりにイベント ハンドラーを使用します。

$('.nospace').on('change', function () {
    if(/^\s+$/.test(this.value)) this.value = '0.0';
});

フィドル

于 2013-06-17T13:00:06.460 に答える
2

使用$(this):

function noSpaceTest(){
    $('.nospace').each(function(){
        var $this = $(this);
        if ($this.val() == ' '){
            $this.val('0.0');
        }
    });
}
于 2013-06-17T12:58:51.597 に答える
2

あなたは作業コードからそれほど遠くありません。ここに修正があります:

function noSpaceTest(){
    $('.nospace').each(function(){
        if ($(this).val() == ' '){
            $(this).val('0.0');
        }
    });
}
于 2013-06-17T12:59:58.707 に答える
2

You need to use this , Also That will fail for multiple spaces like ' ' -

You can do this -

function noSpaceTest(){
    $('.nospace').each(function(){
        if ($.trim(this.value) === ''){
            $(this).val('0.0');
        }
    });
}
于 2013-06-17T13:00:51.580 に答える
1

浮動小数点値でこれを試してください

    function noSpaceTest() {
        $('.nospace').each(function () {
            var this_input = $(this);
            if (parseFloat(this_input.val()) == undefined || parseFloat(this_input.val()) == NaN || $.trim(this.value) === '') {
                this_input.val('0.0');
            }
        });
    }
于 2013-06-17T13:01:46.357 に答える