2013-08-21 2 views
-1

정규 표현식을 사용하여 변수에 입력 필드가 있는지 찾으려고합니다.HTML 마크 업에서 입력 요소를 찾는 방법

내 변수의 내 html은 다음과 같을 수 있습니다.

<span>test here</span> 

또는

<span><input type="text"></span> 

내 코드는

//$(this) is be my variable 

if($(this).html().match("/<input type='text'>/")){ 
      console.log('match found') 
} 

처럼 경기를 찾을 수하지 않는 것입니다. 아무도 그것에 대해 나를 도울 수 있습니까? 고마워요!

+0

'input' 엘레멘트는 닫는'' 태그를 가지지 않아야합니다. 그것은 self-closing 요소이고, wr이어야합니다 itten''. 덧붙여서, 여러분의 변수는 HTML의 a * string *이거나 jQuery 객체에 래핑 된 실제 DOM 노드입니까? –

+0

아마 당신의 질문에 오타가 있지만, 당신은 tyep = "text"를 가지고 있습니다. 그것은 실제 html/non-dom stuff에서도 마찬가지입니까? – kikuchiyo

+0

당신이 그것을 고쳐 준 것처럼 보입니다 :) – kikuchiyo

답변

3

어떻게

if ($(this).find('input[type="text"]').length) { 
    console.log('match found'); 
} 

this하면

에 대한 것은 (표시) HTML의 텍스트 문자열, 당신은 아직도 내가 정확하게 확실하지 않다 예를

$('<span>test here</span>').find('input').length // equals 0 

$('<span><input tyep="text"></span>').find('input').length // equals 1 
+0

그래, 아마 그가 dom이나 mark-up에없는 입력을 일치시키고 싶을 것 같아. 그냥 문자열인가? –

+0

예 dom에없는 입력과 일치해야합니다. html 텍스트를 계획하십시오. +1하지만 – FlyingCat

+2

DOM에는 포함되지 않은 HTML을 사용할 수 없습니다. 어쨌든'$ (this) '로 할 때'$()'에 HTML 텍스트 문자열을 래핑하면 DOM 요소가 포함 된 jQuery 객체로 변환됩니다 – Phil

1

를 들어, 같은 코드를 사용할 수 있습니다 무엇인지 당신은하려고하지만, 나는 위와 같은 결과를 얻을 것이라고 믿습니다. $(this).find('input[type="text"]')

정규 표현식을 찾으려면 /input\s+[^>]*type\s*=\s*['"]text['"]/ 트릭을해야합니다.

+0

에 대해 엄격하게 말하지 않는 한 DOM *에 속하지 않는 HTML을 가질 수는 없지만 dom과 일치하지 않습니다. 그것은 html 일반 텍스트입니다. 감사. – FlyingCat

0

당신이 입력 태그에 대한 정규식 후 경우,이 기본 하나 일 수

<input .*type=['"]text['"].*/> 

이 유형의 모든 입력 태그를 일치 = "텍스트"(큰 또는 작은 따옴표)와 그 사이의 모든 속성. 입력 요소가 페이지에 이미있는 경우

, 내가 jQuery를 제안 :

if($('input[type=text]').length > 0){ 
    console.log('match found'); 
} 

입력 요소가 하지이 닫는 태그를 필요로 않습니다을 유의하시기 바랍니다

<input type="text"></input> 아니라 <input type="text" />

관련 문제