2014-09-28 91 views
1

Javascript代碼

<script>     
    function disableBtn() {   
     document.getElementsByTagName("INPUT")[1].removeAttribute("disabled");      
    }        
</script> 

HTML代碼

<form> 

    <p> 
     <label for="uname">* User Name :</label> 
     <br> 
     <input type="text" name="txtuname" id="uname" onclick="disableBtn()" value=""> 
    </p> 
    <div style="text-align:center"> 
     <p> 
      <input name="username" type="submit" id="submit" value="Change Username" disabled="disable"> 
     </p> 
    </div> 
    <p> 
     <label for="fullname">* Full Name :</label> 
     <br> 
     <input type="text" name="txtfullname" id="fullname" value=""> 
    </p> 
    <div style="text-align:center"> 
     <p> 
      <input name="fullname" type="submit" id="submit" value="Change Fullname" disabled="disable"> 
     </p> 
    </div> 
    <p> 
     <label for="address">* Address :</label> 
     <br> 
     <input type="text" name="txtaddress" id="address" value=""> 
    </p> 
    <div style="text-align:center"> 
     <p> 
      <input name="address" type="submit" id="submit" value="Change Address" disabled="disable"> 
     </p> 
    </div> 
</form> 

我想在執行該功能disableBtn每個輸入標籤添加onclick事件,但我想這個代碼處理任何我點擊的輸入。我不想給出這樣的數字:如何執行功能到不同的輸入標籤?

document.getElementsByTagName("INPUT")[1].removeAttribute("disabled"); 

對於每個輸入元素。

我想我應該使用這個,但我不知道該把它放在哪裏。

+0

所以這個投入應該來單擊輸入元素後啓用.disabled財產? – soktinpk 2014-09-28 00:43:42

+0

是的,它應該刪除desable屬性,它做到了這一點,但我希望它是dyname,而不是隻工作在索引我放入像[1] – user2270924 2014-09-28 00:46:16

+0

嘿傢伙你想解決它,或者你不明白我的題 ? – user2270924 2014-09-28 00:53:02

回答

0

代碼:

更改功能,這一點:

function disableBtn(el) { 
    el.parentNode.nextElementSibling.querySelector("input").disabled = false; 
} 

而且處理程序是:

onclick="disableBtn(this)" 

DEMO:http://jsfiddle.net/dcg8gzqt/


說明:

所以,現在的處理程序傳遞被點擊的disableBtn功能的當前元素。

這則發揮作用......

  • 採取點擊的元素和遍歷到其.parentNode
  • 進取,以.nextElementSibling,這也是未來移動div
  • 然後使用該div內搜索它找到的第一個input.querySelector()
  • 設置inputfalse
+0

謝謝你的工作正常。 如果你不介意,你可以告訴我如何刪除desable屬性只有當我添加或刪除輸入標籤的東西,因爲這個輸入我用它們來顯示數據庫中的值 – user2270924 2014-09-28 01:02:34

+0

@ user2270924請問一個不同的問題if那是你的目標。 – soktinpk 2014-09-28 01:06:12

+0

我現在不能,因爲他們阻止我提問,因爲有時我無法說明我的問題 – user2270924 2014-09-28 01:08:58

1

你想遍歷每個輸入元素並添加一個事件? document.getElementsByTagName("input")返回一個數組,所以你可以使用循環來檢查它。

的JavaScript:

// This is a function which disables an input element 
// Notice I used "this" instead of document.getElementsByTagName("input")[some number] 
// "this" refers to the input element that was clicked 
function disableBtn() { 
    this.parentNode.nextElementSibling.querySelector('input[type="button"]').disabled = false;      
} 
// Get every single input element 
var inputs = document.getElementsByTagName("input"); 
for (var i = 0; i < inputs.length; ++i) { 
    // Loop through the input elements, and add a "click" event 
    var input = inputs[i]; 
    input.addEventListener("click", disableBtn, false); 
}