2013-09-26 22 views
0

所有,我被困在下面的問題,請幫助檢查它。 我在頁面中有兩個輸入文本。假設A和B. 當加載頁面時,A被啓用來輸入文本,而B被禁用,當一個onblur被觸發後,我將驗證A的值,如果它是有效的(等於字符串值test),那麼B可以輸入文字。 問題是,當點擊頁面的任何地方(除了點擊B)之外,A的on-blur事件將被觸發,因爲在那段時間,B被禁用。代碼如下所示。無法知道被禁用的元素上的點擊行爲

<html> 
<head> 
    <script type="text/javascript" > 
     function ATextOnBlur(obj) 
     { 
      if (obj.value=='test') 
      { 
       document.getElementById("BTxt").disabled=false; 
      } 
     } 

    </script> 
</head> 
<body> 
    <input type="text" id="ATxt" value="" onblur="ATextOnBlur(this);"> 
    <input type="text" id="BTxt" value="" disabled="disabled"> 
</body> 
<html> 

而我做了一些測試,發現即使點擊事件不能被激發的禁用元素。

<html> 
<head> 
    <script type="text/javascript" > 
     function textClick() 
     { 
      alert('click'); 
     } 
    </script> 
</head> 
<body> 
    <input type="text" value="" disabled="disabled" onclick="textClick();"> 
</body> 
<html> 

我想知道在Jquery中是否有解決方案嗎?或者它不能被JS或Jquery修復。謝謝。

+1

see here http://stackoverflow.com/questions/3100319/event-on-a-disabled-input它可能會幫助你 – PSR

+0

@PSR非常有用!它回答所有我想知道的。謝謝 –

回答

1

您可以檢查ATxt對keyup事件值,而不是模糊的:

<input type="text" id="ATxt" value="" onkeyup="ATextOnBlur(this);"> 
<input type="text" id="BTxt" value="" disabled="disabled"> 
+0

感謝您的回覆+1,我可以想到的一個代碼問題是,如果在ATextOnBlur函數中存在ajax請求,那麼它將在keyup時觸發ajax請求。我擔心這會導致服務器額外的過載。這意味着服務器會遭到某人的攻擊。謝謝。 –

+0

您可以通過在最後一次keyup事件之後等待一段時間來發出AJAX請求。所以,你不會爲每個keyup發出ajax請求,只有用戶寫完整個單詞。 –