2013-04-06 2 views
0

답변을 찾을 수 없습니다. 그래서

은 간단한 양식 요소가 ..이 중복되지 희망 :

<label>Email Address:</label> 
<input type="text" onblur="validateEmail(this)" /> 

그리고이 입력 값 (및 onblur)이 유효한지 여부를 확인하는 유효성 검사 스크립트를 실행하고 있습니다. 위대한 작품!

지금은 스크립트를 보편적으로 유지하려고합니다. 따라서 클래스 이름이나 ID를 사용하여 작동시키지 않아도됩니다.

값이 이메일 주소가 아닌 경우이 입력란에서 작업을 수행하는 방법을 알고 싶습니다. 특히, 레이블의 색상을 변경하고 필드 자체에 빨간색 테두리를 넣고 싶습니다.

var inputTextTest = field.value; 
var filter = /^((\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*?)\s*;?\s*)+/; 

if (filter.test(inputTextTest)) { 
    var name = field; 
    $(this).focus(); 
    $(this).css("border","1px"); 
    $(this).css("border-color","red"); 
} else { 
    $(this).css("border", "none"); 
} 

나는 $ (이) 내 전화가 작동하지 않는 것을 볼 수 있습니다

다음은 작동하지 않는 스크립트입니다. 그렇다면이 특정 분야에 대한 조치를 취하고 스크립트를 완전히 보편적으로 유지하는 방법 (즉, 특정 클래스 또는 ID 이름에 의존하지 않음)

도움을 받으려면 미리 감사드립니다. 그것은 일반적인 난 당신이 기존의 검증 라이브러리 중 하나를 사용하는 게 좋을 것 있도록하기 위해

+0

obtrusive javascript를 사용해야합니까? – eomeroff

+0

'this '를 사용하면 대상 요소의 이름이 있는지 여부와 관계가 없습니다. 이벤트 처리기를 연결할 수 있도록 이름/ID/클래스 또는 요소 유형 만 선택에 사용할 수 있습니다. 이벤트 처리기 내에서 'this'는 대상 요소를 참조합니다. 선택기가 정확하고 적절한 이벤트가 발생했을 때 핸들러가 실행되면 선택기 **가 ** 작업을 완료해야합니다. 'this'는 핸들러가 부착 될 수있는 선택기가 아닌 것을 고려합니다. 어쩌면 그것은 나이지만 질문은 의미가 없습니다. 또한, 질문의 제목과 텍스트가 일치하지 않는 것 같습니다. –

답변

3

내가 매개 변수가 thisfield입니다 참조 추측합니다 이 상단 :

validateEmail(field) { 
    var inputTextTest = field.value; 
    var filter = /^((\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*?)\s*;?\s*)+/; 

    if (filter.test(inputTextTest)) { 
     var name = field.name; 
     $(field).focus().css("border","1px solid red"); 
    } else { 
     $(field).css("border", "none"); 
    } 
} 
+0

당신이 값을 되찾은 것과 같은 방식으로 이것을 투표하십시오. 되돌아 가서 수정하십시오. – eomeroff

+0

이것은 그랬다. 감사합니다 adeneo.나는 그것이 단순한 무언가 였음에 틀림 없다는 것을 알았다. 그리고 onBlur 호출에서 "this"를 사용하는 것이 작동하는 유일한 방법입니다. 매력처럼 일했습니다. 다시 한번 감사드립니다. –

0

:이 아니기 때문에 당신을 위해 작동하지 않습니다

https://github.com/DiegoLopesLima/Validate#readme

이유는 $ (이)입니다 콜백 또는 참조를 만든 함수에 있지 않습니다.

는 일반적인 루프를하고 당신은 이런 식으로 뭔가를 할 필요 했어 $ (이)를 사용하려면 다음 field.value를 사용하는 등,

$('input').each(function() { 
    $(this) // will now reference each element. 
}); 
1

은 함수 선언 보이는 가정 field 대신 this 시도 validateEmail(field)

같은 onblur

당신은 다음 인수는 다음 개체에 모든 것을 수행으로

0

기능에 스크립트를 넣어 대상을 함수 인수를 선언 할 때 사용하는 어떤 매개 변수 이름을 usee 할 필요가 함수 객체로 this 전달되지만, .

관련 문제