2014-11-26 1 views
0

나는 '단추 1'의 상위 DIV를 얻을 내가 현재 가지고 (그 사업부의 모든 입력을 가능하게하는 것을 시도하고있다 '그들 장애인버튼의 부모 DIV를 받고

<div id="wrapper"> 
<div id="gameInfo"> 
<asp:TextBox ID="gameTitle"/> 
<asp:TextBox ID="gameType" /> 
<asp:TextBox ID="gameprice"/> 
<input type="button" id="button1" value="enable" onClick="myFunc()"/> 
</div> 

자바 스크립트 :

function myFunc() { 
      setTimeout(function() { 
       var inputs = document.getElementById("button1").parentNode.querySelectorAll('input[type="text"]'); 
       [].forEach.call(inputs, function (input) { 
        input.disabled = false; 
       }); 
      }); 
     } 

button1의 부모 노드를 얻으려고하고 있는데 올바른 방법이 확실치 않지만 버튼의 해당 부모 div에있는 모든 입력이 가능하도록 설정되어 있지만 부모 div에만 있습니다. 클릭 한 버튼 중 어떤 제안이 있습니까?

+1

귀하의 질문에 귀하의 질문에 (편집 된) 코드가 작동합니다. (왜 시간이없는 setTimeout가 있습니까?) – GitaarLAB

+0

dev 도구 콘솔 (F12)에 오류가 기록되지 않도록 하시겠습니까? – Rhumborl

답변

0

내가 조금 다른합니다 (의 setTimeout없이) 할 거라고 :

function myFunc(elm){ 
 
    for(var inputs = elm.parentNode.querySelectorAll('input[type="text"]') 
 
     ,   L = inputs.length 
 
     ; L-- 
 
     ; inputs[L].disabled = false //enable inputs 
 
    ); //end loop 
 
}
<div id="wrapper"> 
 
    <div id="gameInfo"> 
 
    <input type="text" ID="gameTitle" disabled="disabled" /> 
 
    <input type="text" ID="gameType" disabled="disabled" /> 
 
    <input type="text" ID="gameprice" disabled="disabled" /> 
 
    <input type="button" id="button1" value="enable" onclick="myFunc(this)" /> 
 
    </div> 
 
</div>


대안을 브라우저에 그 돈 ' t 지원 querySelectorAll (및 선택적으로 지원 disabled) :

function myFunc(elm){ 
 
    for(var inputs = elm.parentNode.getElementsByTagName('input') 
 
     ,   L = inputs.length 
 
     ; L-- 
 
     ; inputs[L].type.toLowerCase()==='text' && (inputs[L].disabled = false) 
 
    ); //end loop 
 
}
<div id="wrapper"> 
 
    <div id="gameInfo"> 
 
    <input type="text" ID="gameTitle" disabled="disabled" /> 
 
    <input type="text" ID="gameType" disabled="disabled" /> 
 
    <input type="text" ID="gameprice" disabled="disabled" /> 
 
    <input type="button" id="button1" value="enable" onclick="myFunc(this)" /> 
 
    </div> 
 
</div>

모두 위의 기능의 아이디어 (3210)는 함수에 클릭 요소 (버튼)를 통과한다는 것입니다 : onclick="myFunc(this)".
id을 하드 코딩 할 필요없이 여러 div ('행')에도 적용됩니다.

시작해야합니다!

+0

이 jsfiddle에서 작동하지 않습니다. http://jsfiddle.net/hjvkx04t/2/ – user2653531

+0

완벽하게 작동합니다. http://jsfiddle.net/hjvkx04t/3/ (친숙한 힌트 : 좋을지도 모릅니다. 아이디어를 사용하기 전에 jsfiddle의 설명서를 읽으십시오 ...) – GitaarLAB

+0

보세요, 여러 div에도 사용할 수 있습니다 : http://jsfiddle.net/hjvkx04t/6/ (방금 일부 '행'추가). 이게 너 니 뒤에 오는거야? – GitaarLAB

0

당신은 제대로 MYFUNC를 호출하지 않습니다 - 그것은 당신이 실제로 전화에 괄호가 필요합니다 : 당신이 DOM 탐색을 위해 jQuery를 사용한 경우

<input type="button" id="button1" value="enable" onClick="myFunc()"/> 

function myFunc() { 
 
    setTimeout(function() { 
 
    var inputs = document.getElementById("button1").parentNode.querySelectorAll('input[type="text"]'); 
 
    [].forEach.call(inputs, function(input) { 
 
     input.disabled = false; 
 
    }); 
 
    }); 
 
}
<input type="text" disabled="disabled" value="another box" /> 
 
<div id="wrapper"> 
 
    <input type="text" disabled="disabled" value="ignore me" /> 
 
    <div id="gameInfo"> 
 
    <input type="text" ID="gameTitle" disabled="disabled" /> 
 
    <input type="text" ID="gameType" disabled="disabled" /> 
 
    <input type="text" ID="gameprice" disabled="disabled" /> 
 
    <input type="button" id="button1" value="enable" onClick="myFunc()" /> 
 
    </div> 
 
</div>

+0

이것이 jsfiddle에서 작동하지 않는 이유는 무엇입니까? http://jsfiddle.net/hjvkx04t/ – user2653531

+1

왼쪽에있는 드롭 다운 상자에서 'onload'를'No wrap-in '으로 변경하십시오. - http://jsfiddle.net/hjvkx04t/5/ – Rhumborl

+0

오, 알았어, 내 프로젝트 솔루션에서 작동하지 않는다. 랩없이 할 일이있다. 내 프로젝트에서 설정해야한다. – user2653531

0

, 당신은 할 수 있습니다 다음 :

$('#<%= button1.ClientID %>').on('click', function() { 
     $(this).parent().find('input[type=text]').removeAttr('disabled'); 
}); 
+0

JavaScript에서 해당 작업을 수행 할 수있는 방법이 있습니까? – user2653531

+0

@Rhumborl 대답은 당신은 그때 – mreyeros

+0

그냥 (관련 부분, 일명 함수) op의 코드와 동일합니다. 나는 OP의 질문이 무엇인지 궁금 하군요. – GitaarLAB

0

오른쪽 함수를 호출하지 않습니다. Y, 중괄호를 사용한다 :

onClick="myFunc()" 
+0

오타 되었기 때문에 – user2653531

관련 문제