2013-03-09 4 views
3

제목은 쉽게 보이지만 도움이 필요합니다.자바 스크립트로 입력 값을 변경하십시오.

사용자가 채울 때까지 값이 null 인 필드 입력 "email"이있는 양식이 있습니다.

function validate(){ 
    var email=document.getElementById("email"); 
    if(!(/[\w-\.]{3,15}@([\w-]{2,}\.)*([\w-]{2,}\.)[\w-]{2,4}/.test(email))) { 
     email.setAttribute('value','Insert a correct email'); 
     email.style.border="2px solid red"; 
    } else { 
     alert("Valid field"); // This is to test it works 
     email.style.border="2px solid #63ce40"; 
     this.form.submit(); 
    } 
    } 

내가 여기서 뭘 원하는 것은 삽입 된 이메일이 요구 사항을 충족하지 않는 경우 (유효하지 않은)이다, 변화 : 좋아, 제출 버튼의 클릭에, I는 함수의 validate()를 호출 입력 값에 "올바른 이메일 삽입"을 입력하십시오.

필드가 비어 있고 제출을 클릭하면 완벽하게 작동하지만 텍스트를 삽입하고 제출을 클릭하면 유일한 변경 사항은 2px 빨간색 테두리를 가져 오는 필드가되지만 텍스트는 변경되지 않습니다.

나는 내가 작성한 잘못된 전자 메일을 제출할 때 제거되고 "올바른 전자 메일 삽입"텍스트로 교체되도록해야한다는 것을 알고 싶습니다.

<li> 
    <input type="text" id="email" name="email" 
    value="" onfocus="this.value=''" size="40"/> 
</li> 

그리고 내가 사용 버튼을 제출 :

입력은

<input id="bsubmit" type="button" value="Submit" 
name="submit" onclick=";this.disabled=true;validate(); 
this.disabled=false;"/> 

감사합니다.

+0

**'email.value의 시도 = '시도! 당신은 돼지입니다! ''** ** setAttribute()는 엘레멘트의 속성을 설정하는 것과 같지 않습니다 (대부분의 경우). –

+0

입력 메시지에 오류 메시지를 직접 쓰는 대신 오류 메시지에 자리 표시자를 사용하는 것이 좋습니다. –

+1

예,이 디자인은 좋지 않습니다 ... 사용자가 방금 전에 입력 한 이메일 주소를 덮어 쓰면서 볼 수있는 기회를 제공하고, 문제를보고 수정합니다. –

답변

3

그것은 당신이 중요한 방법의 모든 때문에 setAttribute하고있었습니다 것이 좋다, 그러나 문제는 당신이 DOM의 일부가이 경우에 value속성를 수정하지 않는다는 것입니다, <input> 요소 value속성을 수정하려고합니다.

email.value = 'Insert a correct email'; 

http://jsfiddle.net/XJZwm/

+0

감사합니다. 두 분 모두 저와 똑같은 해결책을 제공해 주셨습니다. 귀하의 설명도 도왔습니다. 나는 이것을 염두에 두었습니다. – fperezdp

+0

@ user2151981 - 이것은 * 질문에 답하기 때문에 * 문제를 해결할 수있는 방법을 제공하는 것이 아닙니다. 폭발 약은 실제로 당신에게 유용한 것을 말했습니다. 이것은 받아 들여 져야합니다 (그리고 당신도 upvote해야합니다). –

+0

완료; 나는 그 이유로 처음에 그것을 upvoted했다. 어쨌든 나는 15 이상의 명성을 가지고 있지 않기 때문에 나는 upvote 할 수 없다. jsFiddle에서 코드를 확인해 주시겠습니까? 올바른 이메일을 삽입하더라도 잘못된 것임을 알 수 있습니다 ... 실패한 부분을 볼 수 없습니다 :/ – fperezdp

0

email.value = 'Insert a correct email'; 대신 email.setAttribute('value','Insert a correct email');

+0

신난다. 완벽하게 작동한다! – fperezdp

+0

입력 한 이메일 주소를 지우는 대신 오류 메시지를 필드 또는 경고 상자에 표시하는 것을 고려하십시오. –

+0

다행이라면, 올바른 답으로 투표 할 수 있습니다. –

관련 문제