0

私はすでにこれを機能させていますが、もっと簡潔な方法があるはずです。

htmlページのテキストフィールドでonBlurを使用して、値が空またはNaNの場合に文字列の値を置き換えるメソッドを呼び出します。

JS:

function checkStr(str) {
        return str.value = "0";
}

HTML:

onblur="if(this.value=='' || isNaN(this.value)){this.value=checkStr(this.value)};"

したがって、これは機能しますが、網羅的であるように見えます。使用:

function checkStr(str) {
    if (str.value == "" || isNaN(str.value)) {
        return str.value = "0";
    }
}

JSファイル内、および:

onblur="checkStr(this.value);" 

HTMLでは機能しません。

何か案は?

4

4 に答える 4

1

strはあなたの文字列なので、する必要はありませんstr.value:

function checkStr(str) {
    if (str == "" || isNaN(str)) {
        return "0";
    }
}

そしてonblur、実際に入力の値を設定するように設定します(@chrisが言及しているように)。

于 2012-07-29T17:42:05.693 に答える
1

2番目の方法はテキストボックスの値に何も割り当てていないため、実際には次のものが必要です。つまり、テキストボックスを関数に渡します

onblur="checkStr(this);"

そして、関数がテキストボックスをチェックして割り当てるために

function checkStr(textbox) {
    if (textbox.value == "" || isNaN(textbox.value)) {
        textbox.value = "0";
    }
}
于 2012-07-29T17:42:16.340 に答える
0

私の仮定が正しく0、現在の値が数値でない場合、または値がない場合にを設定しようとしている場合は、次のことをお勧めします (インライン JavaScript を使用する必要がある場合)。

onblur="checkStr(this);"

と相まって:

function checkStr(el) {
    el.value = !!!(1 * el.value) ? 0 : el.value;
}

JS フィドルのデモ

于 2012-07-29T17:44:02.217 に答える
0

あなたが試したことは近いように見えますがthis.value、関数に渡す場合は、関数内でチェックしないでくださいstr.value

また、検証に合格した場合は、正しい値を返す必要があります。値が返されたら、値をフィールドに割り当てます。

次のようなものが必要だと思います:

<input type="text" onblur="this.value = checkStr(this.value);" />​

それからjsで...

function checkStr(str) {
    if (str == "" || isNaN(str)) {
        return "0";
    } else {
        return str;
    }
}
于 2012-07-29T17:45:33.583 に答える