2017-07-18 5 views
2

**これはIE9プレースホルダの問題の重複ではありません。その理由は、私が使用している古いJSPフレームワークであるWebWorkは、HTMLのプレースホルダをサポートしていないからです。 **jQueryは配列のぼかしを重視しています

私はplaceholderテキストとしてフィールドの値を表示したい

何をしたいのか。しかし、ユーザーが入力を開始すると、プレースホルダーのテキストが消えます。

問題

私が何かを入力して、外をクリックした場合、どのような私が入力するプレースホルダーテキストに置き換えられます。私はそれが置き換えられないようにしたい。入力が空の場合はプレースホルダテキストを表示し、入力に値がある場合はテキストを置き換えないでください。

制限

私はまた、いくつかの技術的な理由placeholder属性を使用傾けます。 (古いフレームワークでIE9をサポートする必要があります)。

皆さんお手伝い願います。

var inputTextIDs = [ 
    [".hotelLocaiton", "Location"], 
    ["#agentTransfersSearchForm_filter_transfersName", "Location2"] 
]; 

$.each(inputTextIDs, function(i, v) { 
    //$('input'+inputTextIDs[i][0]).val(inputTextIDs[i][1]); 
    $('input' + inputTextIDs[i][0]).on('change', function() { 
     var inputValue = $.trim($('input' + inputTextIDs[i][0]).val()); 
     $('input' + inputTextIDs[i][0]).val(inputTextIDs[i][1]); 
     $('input' + inputTextIDs[i][0]).on('focus', function() { 
      $('input' + inputTextIDs[i][0]).val(''); 
     }).on('blur', function() { 
      $('input' + inputTextIDs[i][0]).val(inputTextIDs[i][1]); 
     }); 
    }); 
}); 
+0

私たちは入力中のプレースホルダを置き換えるから止めることはできないとは思いません! –

+0

@nastyあなたが望む通りに私の答えをチェックすることができます –

+0

[Placeholder in IE9]の可能な複製(https://stackoverflow.com/questions/6366021/placeholder-in-ie9) –

答えて

1

var inputTextIDs = [ 
 
    [".hotelLocaiton", "Location"], 
 
    ["#agentTransfersSearchForm_filter_transfersName", "Location2"] 
 

 
]; 
 

 
$.each(inputTextIDs, function(i, v) { 
 

 
    $('input' + inputTextIDs[i][0]).on('focus', function() { 
 
    if ($('input' + inputTextIDs[i][0]).val() == inputTextIDs[i][1]) { 
 
     $('input' + inputTextIDs[i][0]).val(''); 
 
    } 
 
    }).on('blur', function() { 
 
    if (!$('input' + inputTextIDs[i][0]).val()) { 
 
     $('input' + inputTextIDs[i][0]).val(inputTextIDs[i][1]); 
 
    } 
 
    }); 
 

 

 
    $('input' + inputTextIDs[i][0]).val(inputTextIDs[i][1]); 
 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<input class="hotelLocaiton" /> 
 
<input id="agentTransfersSearchForm_filter_transfersName" />

+0

ありがとうございます。これは動作しないようですが – nasty

+0

@nasty正確に達成する必要があるのは何ですか? –

+0

フィールドにプレースホルダを表示したいのですが、何かを入力した場合は、あなたが書いたものをプレースホルダに置き換えます – nasty

1

あなたはfocusinfocusoutを使用することができます。

var inputTextIDs = [ 
 
    [".hotelLocaiton", "Location"], 
 
    ["#agentTransfersSearchForm_filter_transfersName", "Location2"] 
 
]; 
 

 
$.each(inputTextIDs, function(i, v) { 
 
    $(v[0]).val(v[1]).focusin(function() { 
 
    if ($(this).val() == v[1]) { 
 
     $(this).val(''); 
 
    } 
 
    }).focusout(function() { 
 
    if ($(this).val() == '') { 
 
     $(this).val(v[1]); 
 
    } 
 
    }) 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<input class="hotelLocaiton" /> 
 
<input id="agentTransfersSearchForm_filter_transfersName" />

+0

これは、メッセージを入力した後で入力フィールドをクリックすると、テキストをクリアします。 1)何かを入力し、入力フィールドの中をクリックします。これにより、入力フィールド – nasty

+1

が更新されましたがクリアされます。再試行する。 –

+0

ヒープをありがとう。これは素晴らしいです。しかし、パスワードフィールドでは、 "Password"というテキストの代わりに***が表示されます。まったく修正できますか? – nasty

1

あなたは正確にあなたがしたいと、それはまた、ワットとしてこれを試すことができますパスワードフィールドのために頼む。

var inputTextIDs = [ 
 
    [".hotelLocaiton", "Location"], 
 
    ["#agentTransfersSearchForm_filter_transfersName", "Location2"] 
 

 
]; 
 

 
$.each(inputTextIDs, function(i, v) { 
 
    var placeholderValue = inputTextIDs[i][1]; 
 
    $('input' + inputTextIDs[i][0]).val(placeholderValue); 
 
    
 
    if($('input' + inputTextIDs[i][0]).attr("type")=="password"){ 
 
    $('input' + inputTextIDs[i][0]).attr("original-type","password"); 
 
    $('input' + inputTextIDs[i][0]).attr("type","text"); 
 
    } 
 
    
 
    $('input' + inputTextIDs[i][0]).on('change', function() {  
 
    if ($(this).val().trim() == "") { 
 
     $(this).val(placeholderValue); 
 
     
 
     if($(this).attr("type")=="password"){ 
 
     $(this).attr("type","text"); 
 
     } 
 
    } 
 
    else{ 
 
     if($(this).attr("original-type")=="password"){ 
 
     $(this).attr("type","password"); 
 
     } 
 
    } 
 
    }); 
 

 
    $('input' + inputTextIDs[i][0]).on('focus', function() { 
 
    if ($(this).val().trim() == placeholderValue) { 
 
     $(this).val(''); 
 
     
 
     if($(this).attr("original-type")=="password"){ 
 
     $(this).attr("type","password"); 
 
     } 
 
    } 
 
    }).on('blur', function() { 
 
    if ($(this).val().trim() == "") { 
 
     $(this).val(placeholderValue); 
 
     
 
     if($(this).attr("type")=="password"){ 
 
     $(this).attr("type","text"); 
 
     } 
 
    } 
 
    }); 
 

 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<input class="hotelLocaiton" /> 
 
<input id="agentTransfersSearchForm_filter_transfersName" type="password" />

+0

ヒープをありがとう。これは素晴らしいです。しかし、パスワードフィールドでは、 "Password"というテキストの代わりに***が表示されます。まったく修正できますか? – nasty

+0

私はそれもパスワードのために働くように答えを更新しました。 –

+0

ありがとうございます。しかし、パスワード入力フィールドをクリックすると、 'type'がテキストに変更されます。その後、私が外にクリックすると再びパスワードに変わります – nasty

関連する問題