アプリ版:「スタンプのみでお礼する」機能のリリースについて

表題の通りなのですが、javascriptなどで実現可能でしょうか?

http://g5187066.k-free.net/
【ソース】
<body>
 <div>
  <input type="text">
  <input type="submit" value="検索">
 </div>
 <ul>
  <li>あいうえお</li>
  <li>かきくけこ</li>
  <li>さしすせそ</li>
  <li>たちつていうえと</li>
  <li>なにぬねの</li>
 </ul>
</body>

上記のようなhtmlページがあり、例えば
「いうえ」とフォームから検索したら1番目の<li>要素と4番目の<li>要素が表示され、そのほかの<li>要素は hidden になるようなイメージです。

ヒットする文字列を含む<li>要素以外にjavascriptでクラスを付与させ、そのクラスのスタイルに display:none; などのスタイルを当てることで実現できそうな気はするのですが、どう書けばよいのか全然わからず、もしもご存知の方がいらっしゃいましたらご教授いただければ非常に助かります…

もしくは上記のようなことが実現できるjqueryのプラグインなどが存在するのであればこちらもご教授いただければ非常に助かります…

結構探したのですが見つかりませんでした。。(>_<)

質問者からの補足コメント

  • どう思う?

    うわぁ~(>o<;;)
    すごいですね…
    サラサラーと…(;´Д`)
    ありがとうございます!

    これで全然問題ないのですがキーワード入れてエンターでは動かないものなんですか?

    No.1の回答に寄せられた補足コメントです。 補足日時:2015/08/10 17:32

A 回答 (2件)

なんの工夫もなくいわれた通り書くとこんな感じ?



<style>
li.hide{display:none;}
</style>
<script>
function searchword(obj){
var v=obj.form.elements["keyword"].value;
var n1=document.getElementById("wordlist");
var n2=n1.getElementsByTagName("li");
for(var i=0;i<n2.length;i++){
var reg=new RegExp("(^| )hide( |$)");
var cn=n2[i].className;
cn=cn.replace(reg,"");
if(!n2[i].innerHTML.match(v)){
n2[i].className=(cn+" hide").trim();
}else{
n2[i].className=cn;
}
}
}
</script>
<form>
<input type="text" name="keyword" value="いうえ">
<input type="button" value="検索" onclick="searchword(this)">
</form>
<ul id="wordlist">
<li>あいうえお</li>
<li>かきくけこ</li>
<li>さしすせそ</li>
<li>たちつていうえと</li>
<li>なにぬねの</li>
</ul>
この回答への補足あり
    • good
    • 0
この回答へのお礼

うわぁ~(>o<;;)
すごいですね…
サラサラーと…(;´Д`)
ありがとうございます!

これで全然問題ないのですがキーワード入れてエンターでは動かないものなんですか?

お礼日時:2015/08/10 18:24

エンターはsubmitですからねぇ・・・


trimなど一部仕様外を含めバグっていたのをなおして
こんな感じでどうでしょうか?

<style>
li.hide{display:none;}
</style>
<script>
try{
document.addEventListener('keypress',function(e){pressfunc(e)},true);
}catch(e){
document.attachEvent('onkeypress',function(e){pressfunc(e)});
}
function pressfunc(e){
var t = (e.srcElement || e.target);
if(e.keyCode==13 && t.name=="keyword"){
searchword();
if(e.preventDefault){
e.preventDefault();
}else{
e.returnValue=false;
}
}
}
function searchword(){
var v=document.getElementById("keyword").value;
var n1=document.getElementById("wordlist");
var n2=n1.getElementsByTagName("li");
for(var i=0;i<n2.length;i++){
var cn=n2[i].className;
cn=cn.replace(/(^|\s)hide(\s|$)/,"");
if(! n2[i].innerHTML.match(new RegExp(v))){
n2[i].className=(cn+(cn==""?"":" ")+"hide");
}else{
n2[i].className=cn;
}
}
}
</script>
<form>
<input type="text" name="keyword" id="keyword" value="いうえ">
<input type="button" value="検索" onclick="searchword()">
</form>
<ul id="wordlist">
<li>あいうえお</li>
<li>かきくけこ</li>
<li>さしすせそ</li>
<li>たちつていうえと</li>
<li>なにぬねの</li>
</ul>
    • good
    • 0
この回答へのお礼

もう何というか、完璧にこれです…。
なんかもう本当に( ゚Д゚)←です…。
これだけスラスラとjavascriptなどを取りまわせる神様になりたいです…。
本当にありがとうございました(;´Д`)!

お礼日時:2015/08/11 12:35

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!