10/10/2018, 11:07

Hỏi về Event Javascript

Mình có vấn đề như sau :
mình tạo một hàm
PHP Code:
function abc(e){
if(
e.keyCodecode e.keyCode
else if(
e.whichcode e.which;
alert(code);

Mình dùng sự kiện onkeypress="abc(event)";
Nhưng mình thấy khi sử dụng hàm lại phải ghi chữ event có vẻ dư thừa cho người sử dụng .

Mình muốn trong hàm abc mình tạo luôn một Event dạng onkeypress .Thay vì phải truyền chữ event .

Có bạn nào biết vấn đề này làm ơn giúp mình với !
xx3004 viết 13:21 ngày 10/10/2018
Bạn không cần phải truyền thế đâu, bạn đọc thử ví dụ sau:
Code:
document.onKeyPress=function(e)
	{
	keyCode=(e.keyCode) ? e.keyCode : e.which;
	alert(keyCode);
	}
Chúc bạn thành công.
[x]
s.code viết 13:11 ngày 10/10/2018
Trên 1 trang có rất nhiều element. Mỗi cái có 1 sự kiện riêng. Để bắt 1 sự kiện của 1 phần tử nào đó thì phải chuyền cái sự kiện của nó (dưới 1 đối tượng - chính là đối tượng e) vào hàm thì mới đón nhận và sử lý được.

Như bạn xx3004 đưa ra đó mới chỉ là event của cả document chứ không phải của tag a như chủ thớt đưa ra. Cho nên không thể sử lý chính xác được. Vì lúc đó nhấn phím vào đâu cũng thực hiện cái hàm đó.

Có lẽ trong lúc ứng dụng mà chủ thớt có khó khăn gì nên mới phải hỏi vậy. Tuy nhiên không thể khác là vẫn phải truyền cái sự kiện đó bằng vào hàm thì mới sử lý được.

Nếu bạn ngại phải nhét cái câu gọi hàm đó vào thẻ a dạng onkeypress="abc(event)"; thì vẫn có cách khác đó là bạn đặt cho thẻ a 1 cái ID

ví dụ:

<input type="button" id="myButton" value="Click here />

rồi sau đó bạn viết javascript như sau:

<script type="text/javascript">
var myElement = document.getElementById('myButton');
myElement.onkeypress = function(e)
{
if(e.keyCode) code = e.keyCode;
else if(e.which) code = e.which;
alert(code);
}
</script>

Chúc thành công.
xx3004 viết 13:12 ngày 10/10/2018
Được gửi bởi s.code
Trên 1 trang có rất nhiều element. Mỗi cái có 1 sự kiện riêng. Để bắt 1 sự kiện của 1 phần tử nào đó thì phải chuyền cái sự kiện của nó (dưới 1 đối tượng - chính là đối tượng e) vào hàm thì mới đón nhận và sử lý được.

Như bạn xx3004 đưa ra đó mới chỉ là event của cả document chứ không phải của tag a như chủ thớt đưa ra. Cho nên không thể sử lý chính xác được. Vì lúc đó nhấn phím vào đâu cũng thực hiện cái hàm đó.

Có lẽ trong lúc ứng dụng mà chủ thớt có khó khăn gì nên mới phải hỏi vậy. Tuy nhiên không thể khác là vẫn phải truyền cái sự kiện đó bằng vào hàm thì mới sử lý được.

Nếu bạn ngại phải nhét cái câu gọi hàm đó vào thẻ a dạng onkeypress="abc(event)"; thì vẫn có cách khác đó là bạn đặt cho thẻ a 1 cái ID

ví dụ:

<input type="button" id="myButton" value="Click here />

rồi sau đó bạn viết javascript như sau:

<script type="text/javascript">
var myElement = document.getElementById('myButton');
myElement.onkeypress = function(e)
{
if(e.keyCode) code = e.keyCode;
else if(e.which) code = e.which;
alert(code);
}
</script>

Chúc thành công.
Bạn làm lại những gì mình làm rồi xD! Mình hiểu ngầm là chủ topic có thể thay document.onKeypress = element.onKeypress được, nên mình chỉ đưa đoạn code chính thôi . Cám ơn góp của bạn.
[x]
kenphan19 viết 13:10 ngày 10/10/2018
Được gửi bởi s.code
Trên 1 trang có rất nhiều element. Mỗi cái có 1 sự kiện riêng. Để bắt 1 sự kiện của 1 phần tử nào đó thì phải chuyền cái sự kiện của nó (dưới 1 đối tượng - chính là đối tượng e) vào hàm thì mới đón nhận và sử lý được.

Như bạn xx3004 đưa ra đó mới chỉ là event của cả document chứ không phải của tag a như chủ thớt đưa ra. Cho nên không thể sử lý chính xác được. Vì lúc đó nhấn phím vào đâu cũng thực hiện cái hàm đó.

Có lẽ trong lúc ứng dụng mà chủ thớt có khó khăn gì nên mới phải hỏi vậy. Tuy nhiên không thể khác là vẫn phải truyền cái sự kiện đó bằng vào hàm thì mới sử lý được.

Nếu bạn ngại phải nhét cái câu gọi hàm đó vào thẻ a dạng onkeypress="abc(event)"; thì vẫn có cách khác đó là bạn đặt cho thẻ a 1 cái ID

ví dụ:

<input type="button" id="myButton" value="Click here />

rồi sau đó bạn viết javascript như sau:

<script type="text/javascript">
var myElement = document.getElementById('myButton');
myElement.onkeypress = function(e)
{
if(e.keyCode) code = e.keyCode;
else if(e.which) code = e.which;
alert(code);
}
</script>

Chúc thành công.
Để chạy đc đoạn mã trên là điều không tưởng
thienthantudo viết 13:21 ngày 10/10/2018
Cám ơn các bạn đã nhiệt tình hướng dẫn , mình đã làm được theo như lời của 2 bạn s.code , xx3004 .Đã giải quyết được việc hủy bỏ event khi gọi hàm .
Nhưng có điều là nếu viết riêng ra thì sẽ không chạy được như bạn kenphan19 nói .

Hiên tại thì mình chạy được là phải ghi như sau :
PHP Code:
function abc(){
document.getElementById('button').onkeypress = function(e){
            if(
e.keyCodecode e.keyCode;
            else if(
e.whichcode e.which;
            
alert(code);
        };
}; 
Khi gọi hàm cũng phải ghi
PHP Code:
onkeypress="abc();" 
Như vậy thì có cách nào mình chỉ cần ghi hàm trong đoạn
PHP Code:
<script type="text/javascript">
abc();
</script> 
Thì nó thực hiện sự kiện luôn hay không ?
xx3004 viết 13:21 ngày 10/10/2018
Bạn chỉ cần thế này là được:
Code:
document.getElementById('button').onkeypress = function(e){
            if(e.keyCode) code = e.keyCode;
            else if(e.which) code = e.which;
            alert(code);
        };
Tuy nhiên phải chắc chắn rằng nó được gọi sau khi phần tử "button" dc tạo. Đồng nghĩa với việc:
Code:
document.onLoad=function()
    {
    document.getElementById('button').onkeypress=function(e)
        {
        if(e.keyCode) code=e.keyCode;
        else if(e.which) code=e.which;
            alert(code);
        };
    }
Nói chung để gọi 1 hàm thì có rất nhiều cách làm, bạn cũng có thể dùng abc() như trên, nhưng phải nhớ 1 điều là gọi hàm đó SAU KHI ĐÃ TẠO PHẦN TỬ "button", nếu không nó sẽ trả về lỗi.
Thân.
[x]
thienthantudo viết 13:18 ngày 10/10/2018
Mình đã làm thành công . Cám ơn bạn xx3004 rất nhiều .
Bài liên quan
0