10/10/2018, 11:12

làm sao bắt sự kiện thay đổi giá trị trong JS

Mình có vấn đề thế này :
Mình có 2 cái input a và b
cái b dùng sự kiện onclick thực thi một hàm gửi giá trị thay đổi lại cho a .

Vấn đề là :
Trong javascript có cách nào bắt được việc thay đổi giá trị của a từ bên b gửi qua hay không ?
zmt264 viết 13:19 ngày 10/10/2018
Được gửi bởi thienthantudo
Mình có vấn đề thế này :
Mình có 2 cái input a và b
cái b dùng sự kiện onclick thực thi một hàm gửi giá trị thay đổi lại cho a .

Vấn đề là :
Trong javascript có cách nào bắt được việc thay đổi giá trị của a từ bên b gửi qua hay không ?
tiếng Anh: thay đổi = change => hàm bắt sự thay đổi = onchange
xx3004 viết 13:13 ngày 10/10/2018
Được gửi bởi zmt264
tiếng Anh: thay đổi = change => hàm bắt sự thay đổi = onchange
Haha chuẩn. Ngoài ra bạn còn có thể dùng những hàm bắt sự kiện khi có phím bấm, hoặc khi ko còn focus trên đối tượng nữa. Ví dụ như onKeypress, onKeydown, onKeyup, onBlur...
[x]
VnVision viết 13:14 ngày 10/10/2018
Được gửi bởi thienthantudo
Mình có vấn đề thế này :
Mình có 2 cái input a và b
cái b dùng sự kiện onclick thực thi một hàm gửi giá trị thay đổi lại cho a .

Vấn đề là :
Trong javascript có cách nào bắt được việc thay đổi giá trị của a từ bên b gửi qua hay không ?
Nếu muốn bắt chính xác sự kiện "thay đổi giá trị của a từ bên b gửi qua", thì bạn đã biết b dùng sự kiện onclick để châm ngòi cho sự kiện thay đổi giá trị của a rồi, sao ko chèn thêm một cái ngòi nữa vào sự kiện onclick của b này để kích hoạt khi sự kiện này xảy ra. Pseudo-code:

Code:
b.onclick = function() {
  a.doChange();
  onAChangeEvent();
}
Còn nếu chỉ muốn bắt sự kiện thay đổi giá trị của a (bất kể = cách nào) thì gán (bind) onchange vào a như gợi ý của bác zmt264
thienthantudo viết 13:28 ngày 10/10/2018
Của zmt264 hướng dẫn là mình đã biết làm rồi .Nhưng mà ở đây mình đâu có thao tác lên a .Dữ liệu của a chỉ thay đổi do b mang vào .

Mình cũng biết là bỏ một hàm vào trong hàm b .

Nhưng ở đây mình muốn là không cần b viết code gì như thế nào . MÌnh chỉ cần bắt được cái việc mà b gán giá trị vào cho a .

Cụ thể : Không đụng chạm đến a và cũng không đụng chạm đến b .Khi b giao cho a một vật là mình bắt lấy sự việc này .Chú ý là chỉ bắt sự việc b giao cho a một vật .Ngoài ra không cần biết gì hết .
Phata viết 13:22 ngày 10/10/2018
Được gửi bởi VnVision
Nếu muốn bắt chính xác sự kiện "thay đổi giá trị của a từ bên b gửi qua", thì bạn đã biết b dùng sự kiện onclick để châm ngòi cho sự kiện thay đổi giá trị của a rồi, sao ko chèn thêm một cái ngòi nữa vào sự kiện onclick của b này để kích hoạt khi sự kiện này xảy ra. Pseudo-code:

Code:
b.onclick = function() {
  a.doChange();
  onAChangeEvent();
}
Còn nếu chỉ muốn bắt sự kiện thay đổi giá trị của a (bất kể = cách nào) thì gán (bind) onchange vào a như gợi ý của bác zmt264
Bác này dân IT mà cứ như kỹ sư địa chất, toàn là châm ngòi, phát nổ , kích hoạt ...http://www.ddth.com/images/icons/icon14.gif
thienthantudo viết 13:17 ngày 10/10/2018
Được gửi bởi thienthantudo
Của zmt264 hướng dẫn là mình đã biết làm rồi .Nhưng mà ở đây mình đâu có thao tác lên a .Dữ liệu của a chỉ thay đổi do b mang vào .

Mình cũng biết là bỏ một hàm vào trong hàm b .

Nhưng ở đây mình muốn là không cần b viết code gì như thế nào . MÌnh chỉ cần bắt được cái việc mà b gán giá trị vào cho a .

Cụ thể : Không đụng chạm đến a và cũng không đụng chạm đến b .Khi b giao cho a một vật là mình bắt lấy sự việc này .Chú ý là chỉ bắt sự việc b giao cho a một vật .Ngoài ra không cần biết gì hết .
Giúp mình câu đó đi !
VnVision viết 13:14 ngày 10/10/2018
Được gửi bởi thienthantudo
Của zmt264 hướng dẫn là mình đã biết làm rồi .Nhưng mà ở đây mình đâu có thao tác lên a .Dữ liệu của a chỉ thay đổi do b mang vào .

Mình cũng biết là bỏ một hàm vào trong hàm b .

Nhưng ở đây mình muốn là không cần b viết code gì như thế nào . MÌnh chỉ cần bắt được cái việc mà b gán giá trị vào cho a .

Cụ thể : Không đụ chạm đến a và cũng không đụng chạm đến b .Khi b giao cho a một vật là mình bắt lấy sự việc này .Chú ý là chỉ bắt sự việc b giao cho a một vật .Ngoài ra không cần biết gì hết .
Cái bạn nói là không thể. Nếu ngôn ngữ lập trình (javascript) không hỗ trợ việc theo dõi sự kiện b gọi a, và bạn cũng ko thể can thiệp vào hoạt động bên trong của b hay a, thì những gì diễn ra giữa chúng chỉ có chúng biết thôi. Nếu sự kiện b gọi a (b giao cho a một vật như bạn nói) là một sự kiện sẽ được sử dụng phổ biến, thì tác giả của hàm b.onclick() đó phải/nên chèn vào những "hook" để những code sử dụng nó (client code) dùng những hook đó để có những hành động thích hợp. Pseudo-code:

b.actOnA = function() {
beforeActingOnA(); // trước sự kiện gọi a
actOnA() // giao việc/vật cho a ở đây
afterActingOnA(); // sau sự kiện gọi a
}


Được gửi bởi Phata
Bác này dân IT mà cứ như kỹ sư địa chất, toàn là châm ngòi, phát nổ , kích hoạt ...http://www.ddth.com/images/icons/icon14.gif
Ui lập trình hay IT j thì cũng rất nhiều khái niệm, cách làm được mô phỏng theo những sự vật hiện tượng đời thường, với mục đích là để giảm bớt tính trừu tượng & phức tạp vốn là những khó khăn cơ bản của việc lập trình
thienthantudo viết 13:17 ngày 10/10/2018
Mình cứ tưởng nó được hỗ trợ như trong việc hacker đứng ở giữa để nghe giao tiếp giữa hay máy .

thanks VnVision! Mình đã hiểu .
Bài liên quan
0