0

現在、問題が発生しています。Message...テキストエリアに値(ページをロードしたときの値)がある場合は、テキストエリアをリセットしようとしています。しかし、現在のように、どのような値を持っていてもリセットされます。これが私のjqueryコードです:

if ($("#text").value = 'Message...') 
{
    $("#text").click(function () {
        $(this).val('');
    });
}

HTMLコードは、フォーム内の単なるテキストエリアです。

4

2 に答える 2

1

$("#text").value = 'Message...'代入演算子を使用しているため、常にtrueになります。===代わりに比較のために使用してください。

if ($("#text").val() === 'Message...') 
{
    $("#text").click(function () {
        $(this).val('');
    });
}
于 2013-02-04T18:35:01.133 に答える
1

あなたの問題のいくつかはそれです

if ($("#text").value = 'Message...') 
// should be replaced with the line below
if ($(this).val() == 'Message...')

val()代入演算子の代わりに、および代わりに、等式演算子を使用していることに注意してvalueください(恒等演算子も使用できます===)。

また、テキストが常にリセットされる理由は、#text要素をクリックするたびにイベントハンドラーがテキストをリセットするためです。したがって、期待される動作を実現するには、イベントハンドラー内でロジックをラップする必要があります。

$("#text").click(function () {
  if ($(this).val() == 'Message...')
    $(this).val('');
 });

「プレースホルダー」効果を実現したい場合は、代わりに以下を使用できます。

$("#text").focusin(function () {
  if ($(this).val() == 'Message...')
    $(this).val('');
}).focusout(function() {
  if ($(this).val() == '')
    $(this).val('Message...');
});
于 2013-02-04T18:56:49.960 に答える