2011-08-12 12 views
2

が、私は「検索」のIDに提出してメッセージを表示し、「検索」したいと時にユーザーがクリック、それは消えています。ここに私のコードです。それは動作しません。問題のカスタマイズの<input type = ...「検索」> jQueryのモバイル

<script> 
$('#acceuil').live('pagecreate',function(event){ 
$('#search').blur(function(){ 
    if ($('#search').val()=='') 
    $('#search').val("search"); 
}); 

$('#search').focus(function(){ 
    if (('#search').val()=='search') 
    $('#search').val(""); 
}); 
}); 
</script> 



<div data-role="page" id ="acceuil" > 
<div data-role="header" data-theme="a" ><h3>TEST</h3></div> 
<div data-role="content"> 
    <div data-role="container" > 
    <img src="images/olampromo.gif"> 
</div> 
<div data-role="container"> 
    <label for="search">Cherchez votre coupon :</label> 
    <input type="search" id="search" value="search">   
</div> 

</div> 
<div data-role="footer" data-theme="a" ><h3>footer</h3></div> 

答えて

2

JSには$が見つかりませんでした。ラインを変更してみてください:

if (('#search').val()=='search') 

に:

if ($('#search').val()=='search') 

あなたはさらにthisを利用して、それを向上させることができます。 thisは、イベントがトリガーされたオブジェクト(つまり、検索要素)を参照します。だから、代わりに試してみてください:

if ($(this).val()=='search') 

ぼかしハンドラとフォーカスハンドラの両方に同じロジックが適用されます。

はここで解決策を実証jsFiddleです。 HTML5ネイティブplaceholder属性を使用しないのはなぜ

 $("#search").focus(function(srcc) { 
     var p_val = "Search"; 
     if ($(this).val() == p_val) { 
      $(this).val(""); 
     } 
    }); 

    $("#search").blur(function() { 
     var p_val = "Search"; 
     if ($(this).val() == "") { 
      $(this).val(p_val); 
     } 
    }); 

    $("#search").blur(); 
+0

グレートはあなたに良い点をだ –

8

+0

に感謝します。また、OPは既にHTML5の 'type =" search "'を使用しています。しかし、古いブラウザではうまくいきませんが、 'type =" search "は正常に' type = "text" 'に格下げされるはずです。 – Spycho

+0

レガシーサポートが必要な場合は、両方のテクニックのハイブリッドメソッドを使用します。しかし、古いブラウザのための良い点 –

+0

それはクールな男です –

関連する問題