2011-08-12 3 views
2

id가 "filed"인 파일에 "search"메시지를 표시하고 사용자가 클릭하면 사라지게하고 싶습니다. 여기 내 코드가있다. 작동하지 않습니다.문제 사용자 정의 <input type = "search"...> Jquery Mobile

<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입니다.

 $("#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

가 왜 HTML5 기본 틀 속성을 사용하지 :

+0

감사합니다. 또한 OP는 이미 HTML5'type = "search"'를 사용하고 있기 때문에 더 많은 HTML5를 추가하는 것이 잠재적으로 허용 가능합니까? 구형 브라우저에서는'type = "search"가 정상적으로'type = "text"'로 저하되는 반면에 작동하지 않을 것입니다. – Spycho

+0

레거시 지원을 원한다면 두 기술의 하이브리드 방법을 사용합니다. 그래도 구식 브라우저에 좋은 점 –

+0

그건 멋진 사람이야. –

관련 문제