我正在尝试获取“button1”的父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>javascript:
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。有什么建议吗?
发布于 2014-11-26 14:55:37
我会做一些不同的事情(没有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>
对于不支持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>
上述两个函数的思想都是将单击的元素(按钮)传递给函数:onclick="myFunc(this)"。
这也适用于多个div(“行”),而不需要硬编码id。
这会让你开始的!
发布于 2014-11-26 14:28:19
您只是没有正确地调用myFunc --您需要括号才能真正调用它:
<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>
发布于 2014-11-26 14:31:12
如果您使用jquery进行DOM遍历,则可以执行以下操作:
$('#<%= button1.ClientID %>').on('click', function() {
$(this).parent().find('input[type=text]').removeAttr('disabled');
});https://stackoverflow.com/questions/27151521
复制相似问题