2016-05-17 8 views
1

例では、デフォルト値が5のところに入力があります。 しかし、ユーザーはバックスペースを使用してそれを削除します。そのあとで再びデフォルト値を設定します。値が空の場合、入力のデフォルト値を設定する方法は? jQuery

+0

ユーザーがあなたがreadonly属性を使用することができます値を更新していないか、またはデフォルト値に再び値を更新するために、ぼかし、変更またはからkeyup/keydownのイベントを使用することができ、必要に応じて。 –

答えて

2

ご入力は、あなたが最初に設定した場合、デフォルト値を取得するために

$('#test').on('change blur',function(){ 
 
     if($(this).val().trim().length === 0){ 
 
     $(this).val(5); 
 
     } 
 
    })
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input id="test" type="text" value = "5" />

+1

申し訳ありませんが、これはひどいですし、私はそれがupvotesを得ることを理解していません。値を削除するとすぐに、値が戻されます。ほとんどの一般ユーザーは、異なる値を入力する方法を理解していません。 – Archer

+1

しかし今私は5を他のものに変更することはできません! – Ankit

+0

^^そうですね。代わりに変更またはブラーイベントハンドラを使用することをお勧めします。 – Archer

2

以下の利用defaultValueのように行うことができますID testを持っているとしましょう:

$(':text').on('blur', function(e){ 
 
    this.value = this.value.trim() || this.defaultValue; 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type='text' value='5'>

0

keyupの代わりにblurを使用する方が良いでしょう。理由は次のとおりです。

ユーザーが数字(1桁のみ)を入力したいが、5でない場合は、(3)としましょう。ユーザーがデフォルトの番号(この場合は(5))をバックスペースし、1桁の数字を入力したい場合、ユーザーは決してできません。

$('#test').on('blur',function(){ 
    if($(this).val().trim().length == 0){ 
    $(this).val(5); 
    } 
}) 

注:また値が整数であるかどうかを確認するためkeyup機能を使用する必要があり、!isNaN

1

それはデフォルト値を削除するからユーザーを妨げるように私は、keyupを使用していないお勧めしたいと新しい値で更新します(keyupがバックスペースキーによってトリガーされた後に値がないため)。

代わりに私が(関連する要素がselector変数に保持されていると仮定して)与えることを、changeblurを使用することをお勧めしたい:

$(selector).on('change blur', function() { 
    // sets the value of the element based on the current-value; 
    // if the value is equal to an empty string ('') once the 
    // leading and trailing white-space is removed (using 
    // String.prototype.trim()) then we set the value to the 
    // defaultValue (the value held by the <input> on page-load) 
    // otherwise we set it to the current-value: 
    this.value = this.value.trim() === '' ? this.defaultValue : this.value; 
}); 

あなたは再びプレーンのJavaScript –で同じ機能を実装したい場合あなたは以下のように使用することができ、関連する要素がselector変数–に保持されていると仮定すると:

function defaultIfEmpty(){ 
    let el = this; 
    el.value = el.value.trim() === '' ? el.defaultValue : el.value; 
} 
selector.addEventListener('change', defaultIfEmpty); 
+0

私はOPなどがこの回答に興味がないと思います。 – Jai

+0

これをIE8(またはそれ以前)で動作させるには、['trim()' polyfil](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/)を使うことができます文字列/トリム) – apokryfos

+0

IE8なぜ最新のウィンドウにはイベントがありません。より良いエクスペリエンスのためのブラウザのアップグレードや変更...! – Jai

0

より一般的なソリューション:それは空になっています一度

HTML

<input type='text/numeric/etc' data-default='defaultValue' value='defaultValue' /> 

はJavaScript

$('input[data-default], textarea[data-default]').on('change blur',function(){ 
    if($(this).val().length == 0) { 
     $(this).val($(this).attr("data-default")); 
    } 
} 

data-default属性が設定された任意の入力またはテキストエリアはデフォルトにフォールバックします。

0
<input class="test" type="text" value = "5" /> 

JS

//get default value 
val = $('.test').val(); 

$('.test').on('change blur', function() { 
    //check if change 
    if ($(this).val().trim().length === 0) { 
    $(this).val(val); 
    } 
}) 
関連する問題