2011-09-16 3 views
-1

나는 마우스가 그 중 하나를 클릭 할 때까지 필드에 텍스트를 보여주는 HMTL 연락처 양식에서 자바 스크립트를 사용하려고합니다. 그러나 내 PHP는 여전히 필드에 텍스트가 있다는 것을 생각하는 것만 보입니다. JavaScript는 실제 HTML이 아닌 JavaScript입니다. 다른 사람이이 문제를 해결하도록 도와 줄 수 있습니까?내 javascript가 내 PHP를 혼란시키는 이유는 무엇입니까

자바 스크립트/HTML

<form method="post" action="sendEmail.php"> 

<input type="text" name="name" id="name" onfocus="if (this.value == 'Your Name') 
this.value = '';" onblur="if (this.value == '') this.value = 'Your Name';" maxlength="30" 
value="Your Name" /> 

<input type="text" name="email" id="email" onfocus="if (this.value == 'Your Email') 
this.value = '';" onblur="if (this.value == '') this.value = 'Your Email';" maxlength="30" 
value="Your Email" /> 
<br /><br /> 


<textarea name="message" id="comments" value="Enter Your Message Here..." cols="60" rows="5" 
onfocus="if (this.value == 'Enter Your Message Here...') this.value = '';" 
onblur="if (this.value == '') this.value = 'Enter Your Message Here...';" >Enter Your Message Here...</textarea>  
</form> 

PHP는

if (strlen($name) < 2) { 
     $error['name'] = "Please enter your name"; 
    } 

    if (!preg_match('/^[a-z0-9&\'\.\-_\+][email protected][a-z0-9\-]+\.([a-z0-9\-]+\.)*+[a-z]{2}/is', $email)) { 
     $error['email'] = "Please enter a valid email address"; 
    } 

    if (strlen($comments) < 5) { 
     $error['comments'] = "Messages must be longer then 5 characters"; 
    } 
+1

팁 : [프로그레시브 향상] (http://www.alistapart.com/articles/understandingprogressiveenhancement) 및 [구조, 표현 및 동작 분리] (http : //www.alistapart .com/articles/behaviorarnation) – Herbert

답변

0

그러나 내 PHP 보인다 양식은 여전히 ​​때 유일한 텍스트 필드에이 있다고 생각하는 자바 스크립트가 아니라 실제 HTML

JavaScript는 여전히 "실제 HTML"에 영향을줍니다. JavaScript로 값을 설정하는 경우 PHP는 제출할 때 값을 보게됩니다. HTML5의 placeholder 속성 (및 구형 브라우저에서의 기능을 시뮬레이트하는 JavaScript 라이브러리)을 살펴볼 수도 있습니다.

+2

설명 할 수없는 downvote에 대응하기 위해 +1 –

+0

건배, @Sean Vieira. – ceejayoz

0

데이터를 추가하거나 삭제하는 JavaScript는 <input>의 값을 변경합니다. value은 양식을 제출할 때 브라우저에서 전 송하는 내용입니다. 다음 중 하나를 수행 할 수 있습니다

  • 은 입력을 통해 라벨을 이동하도록
  • 사용 CSS + 자바 스크립트에서 기본값으로 어떤 필드를 지우고 숨기기/사용자로 보여 양식에 제출 처리기를 추가
  • JavaScript를 완전히 제거하고 새로운 placeholder 속성을 사용합니다 (자바 스크립트 심 (shim)을 사용하여 지원하지 않는 구형 브라우저에 지원을 추가합니다. @ceejayoz가 제시하는 것처럼 속성).
    <-- This is the best option
+0

직렬 다운 보더가 자신을 설명해 주시겠습니까? –

+2

+1 누군가 어제 이것을했습니다. 밝은면에서 모두 8 명입니다. :) – Herbert

+1

* Chuckles * @Herbert, 아주 좋은 지적입니다. 여전히, 나는 ** 그들이 downvoting에 대한 좋은 이유가 있다고 가정한다. 이것은 웹 개발이나 사이트가 어떻게 작동해야하는지에 관해서 우리가 여기에 없어서는 안되는 무엇인가를 놓치고 있다는 것을 의미한다 .-) –

0

당신은 HTML의 값을, 그래서 심지어 자바 스크립트없이, 그 값이 전송됩니다. 값이 기본값 인 경우 양식 제출을 허용하지 않습니다. 이 런 스크립트는 문서 준비 상태로 각 입력 값을 원래 값으로 기록하고 포커스 및 흐림 처리기를 연결합니다. 비어 있거나 원래의 값이있을 경우 제출되는 값을 검사하는 양식에 제출 핸들러를 첨부하십시오.

+1

+1 설명되지 않은 downvote 카운터 –

관련 문제