2016-12-07 32 views
1

如何檢測textarea值何時使用javascript更改?如何檢測textarea值何時使用javascript更改?

填寫數據到id="yyyy"然後數據id="xxxx"也會改變,我怎麼能alertid="xxxx"的值改變?

https://jsfiddle.net/9b6h897d/10/

請不要在功能check編輯代碼和id="yyyy"

<textarea id="yyyy" onkeyup="check(this.value)"></textarea> 
<textarea id="xxxx" onchange="check2(this.value)" readonly></textarea> 

<script> 
function check(value){ 
    document.getElementById("xxxx").value = value; 
} 
function check2(value){ 
    alert(value); 
} 
</script> 
+0

[更新text/textarea值更改w/jQuery]的可能重複(http://stackoverflow.com/questions/7165519/update-text-on-textarea-value-change-w-jquery) –

回答

0

你可以重新定義textarea元素的value屬性:

<html> 
    <head> 
     <script> 
      //Is not changable according to OP 
      function check(value){ 
       document.getElementById('xxxx').value = value 
      }; 

      //Is not changable according to OP 
      function check2(value){ 
       alert(value) 
      }; 

      window.onload = function(){ 
       var tE = document.querySelector('#xxxx'); //The readonly textarea 

       //Redefine the value property for the textarea 
       tE._value = tE.value; 
       Object.defineProperty(tE, 'value', { 
        get: function(){return this._value}, 
        set: function(v){ 
         console.log(this.id, ' - the value changed to: ' + v) 
         this._value = v; 
         this.setAttribute('value', v) //Setting the attribute (browser stuff); 
         check2(v) 
        } 
       }) 
      } 
     </script> 
    </head> 

    <body> 
     <textarea id = 'yyyy' onkeyup = 'check(this.value)'></textarea> 
     <textarea id = 'xxxx' onchange = 'check2(this.value)' readonly></textarea> 
    </body> 
</html> 

CONSOL即日誌(): https://jsfiddle.net/mu7o1sxq/

警報(): https://jsfiddle.net/mu7o1sxq/2/

+0

在演示中我沒有收到任何東西T___T –

+0

@weduti sepoyuei:它在控制檯中。一個男人更喜歡警報()嗎? – Lain

+0

@weduti sepoyuei:用alert()做了第二個版本。 – Lain

0

,你可以調用其他功能的內部功能

<script> 
function check(value){ 
    document.getElementById("xxxx").value = value; 
    check2(value); 
} 
function check2(value){ 
    alert(value); 
} 

jsfiddle

試試這個小提琴...

+0

功能檢查已超出我的控制T___T –

+0

它警告'undefined'第一次.. – gkb

+0

是我更新了@gkb – nisar

1

調用第二函數在第一不更改事件

試試這個:

<textarea id="yyyy" onkeyup="check(this.value)"></textarea> 
<textarea id="xxxx" readonly></textarea> 

<script> 
function check(value){ 
    document.getElementById("xxxx").value = value; 
    check2(value);//call the check2 here 
} 
function check2(value){ 
    alert(value); 
} 
</script> 

或觸發onchange事件

<script> 
function check(value){ 
    document.getElementById("xxxx").value = value; 
    document.getElementById("xxxx").onchange(); 
} 
function check2(value){ 
    alert(value); 
} 
</script> 

或其他事件添加到您的XXX

<textarea id="yyyy" onkeyup="check(this.value)" oninput="check2(this.value)"></textarea> 
<textarea id="xxxx" readonly></textarea> 

<script> 
function check(value){ 
    document.getElementById("xxxx").value = value; 
} 
function check2(value){ 
    alert(value); 
} 
</script> 
+0

函數'check'和'id =「yyyy」'失控我T_T –

+0

得到一些男人並控制它們:)) – madalinivascu

+0

你是什​​麼意思? – madalinivascu

0

你不需要更新check()值改爲調用check2()並更新值。所以從id=xxxx

編輯刪除onchange事件:從事件處理程序重寫keyup如下,並調用inaccessible功能

<textarea id="yyyy" onkeyup="check(this.value)"></textarea> 
 
<textarea id="xxxx" readonly></textarea> 
 

 
<script> 
 
    function check(value) { 
 
    //your unaccessible function 
 
    } 
 

 
    document.getElementById("yyyy").addEventListener('keyup', function() { 
 
    document.getElementById("xxxx").value = this.value; 
 
    alert(this.value); 
 
    check(this.value) 
 
    }); 
 
</script>

+0

function' check' and'id =「yyyy」'out of my control T_T –

+0

@wedutisepoyuei然後你必須重寫這個keyup,因爲你有限制。請嘗試更新的答案。 – ScanQR

0

您可以使用MutationObserver與配置設置爲attributes:true,設置#xxxx.dataset#yyyy.valuecheck功能

<textarea id="yyyy" onkeyup="check(this.value); document.getElementById('xxxx').dataset.value = this.value"> 
 
</textarea> 
 
<textarea id="xxxx" data-value="" readonly></textarea> 
 

 
<script> 
 

 
    var x = document.getElementById("xxxx"); 
 

 
    function check(value) { 
 
    document.getElementById("xxxx").value = value; 
 
    } 
 

 
    function check2(value) { 
 
    alert(value); 
 
    } 
 

 
    var observer = new MutationObserver(function(mutations) { 
 
    mutations.forEach(check2.bind(x, x.value)) 
 
    }); 
 

 
    observer.observe(x, { 
 
    attributes: true 
 
    }); 
 

 
</script>

相關問題