2016-12-18 19 views
4

入力値に次の文字(および一致する文字のみ)が含まれている場合、テキストを非表示にしようとしています。現在のところ、それは "england"という単語の文字だけでなく、どんな文字でもトリガーされます。なぜそうは分かりません。どんな助けも大歓迎です。入力値に次の文字が含まれています

var input = document.getElementById("input1") 
 

 
$("#input1").keypress(function(event) { 
 
    if (event.which == 13) { 
 
    event.preventDefault(); 
 
    $("input").submit(); 
 
    } 
 
}); 
 

 
input.addEventListener("keyup", function() { 
 
    if ($("input[value*='england']")) { 
 
    $('#etext').hide(); 
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input id="input1" type="text" value="" placeholder="Search.. ." /> 
 
<p id="etext">England</p>

+1

あなたのコードが多くのスペースを占める理由はわかりません。 –

+1

value属性はユーザーの入力を反映するのではなく、valueプロパティが反映されることを理解することが重要です。 '$()'は一致するものが見つからなくてもオブジェクトを返すので、 'if($(selector))'は常に正真正銘です。 – charlietfl

+1

@charlietfl答えにポイントを追加しました。ありがとう。 ':D' –

答えて

7

これは、右のチェックではありません:あなたはでそれを変更する必要が

if ($("input[value*='england']")) { 

if ($("input").val().toLowerCase().indexOf("england") === 0) { 

上記のコード:

  • <input>の現在の値を取得します。
  • 小文字に変換します。
  • インデックスがenglandかどうかを確認します。

同様に、純粋なJavaScriptとjQueryを混在させる必要はありません。同じコードを使用し、documentreadyイベントのすべてを囲みます。

$(function() { 
 
    var input = document.getElementById("input1"); 
 

 
    $("#input1").keypress(function(event) { 
 
    if (event.which == 13) { 
 
     event.preventDefault(); 
 
     $("input").submit(); 
 
    } 
 
    }); 
 

 
    $("#input1").on("keyup", function() { 
 
    if ($(this).val().toLowerCase().indexOf("england") === 0) { 
 
     $('#etext').hide(); 
 
    } 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input id="input1" type="text" value="" placeholder="Search.. ." /> 
 
<p id="etext">England</p>

注: value属性は、ユーザーの入力が、valueプロパティの意志を反映していないことを理解することが重要です。またif ($(selector))は$()がオブジェクトを返すので常に真実になります

最後に、ステートメントをセミコロン;で終了してください。良い練習。

+1

私が探していたことは非常に高く評価されました。しかし、入力値が 'england'の一部に等しい場合、テキストを隠すことは可能です。 eksampleの場合、 'eng'と入力するとテキストが表示されなくなりますが、engfxと入力すると表示されません。 –

+0

@JohnKはい、 'england'を' eng'に変更してください。もう一つは、あなたは別の方法で実装する必要があると思います。 –

+0

@JohnK [**何かこれのようなもの?**](http://output.jsbin.com/qimagufipe) –

関連する問題