Em có một input có thuộc tính onclick="doSomeFunction();" bây giờ muốn thêm một hàm nữa ví dụ như onclick="doSomeFunction(); doSomeFunction2();". Công việc này có làm bằng Javascript được không ah? Em cám ơn mọi người.
$(document).ready(function() { //code của bạn đặt ở đây sẽ được chạy khi dom load xong.
});
Nếu ko phân biệt thứ tự nhiều event handler có thể dùng addEventListener như sau (code tớ vẫn đang dùng và ko có vấn đề ǵ). Cái removeEventListener chưa dùng lần nào :P.
/** * Cross browser add event listener method. For 'evt' pass a string value with the leading "on" omitted * e.g. Util.addEventListener (window,'load',myFunctionNameWithoutParenthesis,false); * @param obj object to attach event * @param evt event name: click, mouseover, focus, blur... * @param func function name * @param useCapture true or false; if false => use bubbling * @static * @author hoatle * @see http://phrogz.net/JS/AttachEvent_js.txt */ function addEventListener(obj, evt, fnc, useCapture) { if (obj === null || evt === null || fnc === null || useCapture === null) { debug.warn('all params is required from Util.addEventListener!'); return; } if (!useCapture) useCapture = false; if (obj.addEventListener){oatle obj.addEventListener(evt, fnc, useCapture); } else if (obj.attachEvent) { obj.attachEvent('on'+evt, fnc); } else{ myAttachEvent(obj, evt, fnc); obj['on'+evt] = function() { myFireEvent(obj,evt) }; }
//The following are for browsers like NS4 or IE5Mac which don't support either //attachEvent or addEventListener var myAttachEvent = function(obj, evt, fnc) { if (!obj.myEvents) obj.myEvents={}; if (!obj.myEvents[evt]) obj.myEvents[evt]=[]; var evts = obj.myEvents[evt]; evts[evts.length] = fnc; }
var myFireEvent = function(obj, evt) { if (!obj || !obj.myEvents || !obj.myEvents[evt]) return; var evts = obj.myEvents[evt]; for (var i=0,len=evts.length;i<len;i++) evts[i](); }
}
/** * removes event listener. * @param obj element * @param evt event name, 'click', 'blur'. 'focus'... * @func function name to be removed if found * @author hoatle * @static * //TODO make sure method cross-browsered */ function removeEventListener(obj, evt, func) { if (obj.removeEventListener) { obj.removeEventListener(evt, func, false); } else if (obj.detachEvent) {//IE obj.detachEvent('on'+evt, func) }
}
Sau đó add các thể loại event handler vào:
function doSomething() {alert('doSomething()');} function doSomething2() {alert('doSomething2()');} function doSomethingN() {alert('doSomethingN()');}
Nên dùng cái này nếu muốn có nhiều event handler (nhưng ko phân biệt thứ tự cái này chạy trước, chạy sau) cho một element. Lưu ư: hiện tại chỉ biết addEventListener vào thôi chứ chưa biết là có bao nhiêu event handler, sau này sẽ có :D. Cheer! :D
On Jan 7, 8:41 am, Huynh Quoc Huy <huynhquoc...@gmail.com> wrote:
> $(document).ready(function() { > //code của bạn đặt ở đây sẽ được chạy khi dom load xong. > });
> Nếu ko phân biệt thứ tự nhiều event handler có thể dùng > addEventListener như sau (code tớ vẫn đang dùng và ko có vấn đề ǵ). > Cái removeEventListener chưa dùng lần nào :P.
> /** > * Cross browser add event listener method. For 'evt' pass a string > value with the leading "on" omitted > * e.g. Util.addEventListener > (window,'load',myFunctionNameWithoutParenthesis,false); > * @param obj object to attach event > * @param evt event name: click, mouseover, focus, blur... > * @param func function name > * @param useCapture true or false; if false => use bubbling > * @static > * @author hoatle > * @see http://phrogz.net/JS/AttachEvent_js.txt > */ > function addEventListener(obj, evt, fnc, useCapture) { > if (obj === null || evt === null || fnc === null || useCapture === > null) { > debug.warn('all params is required from Util.addEventListener!'); > return; > } > if (!useCapture) useCapture = false; > if (obj.addEventListener){oatle > obj.addEventListener(evt, fnc, useCapture); > } else if (obj.attachEvent) { > obj.attachEvent('on'+evt, fnc); > } else{ > myAttachEvent(obj, evt, fnc); > obj['on'+evt] = function() { myFireEvent(obj,evt) }; > }
> //The following are for browsers like NS4 or IE5Mac which don't > support either > //attachEvent or addEventListener > var myAttachEvent = function(obj, evt, fnc) { > if (!obj.myEvents) obj.myEvents={}; > if (!obj.myEvents[evt]) obj.myEvents[evt]=[]; > var evts = obj.myEvents[evt]; > evts[evts.length] = fnc; > }
> var myFireEvent = function(obj, evt) { > if (!obj || !obj.myEvents || !obj.myEvents[evt]) return; > var evts = obj.myEvents[evt]; > for (var i=0,len=evts.length;i<len;i++) evts[i](); > } > }
> /** > * removes event listener. > * @param obj element > * @param evt event name, 'click', 'blur'. 'focus'... > * @func function name to be removed if found > * @author hoatle > * @static > * //TODO make sure method cross-browsered > */ > function removeEventListener(obj, evt, func) { > if (obj.removeEventListener) { > obj.removeEventListener(evt, func, false); > } else if (obj.detachEvent) {//IE > obj.detachEvent('on'+evt, func) > } > }
> Sau đó add các thể loại event handler vào:
> function doSomething() {alert('doSomething()');} > function doSomething2() {alert('doSomething2()');} > function doSomethingN() {alert('doSomethingN()');}
> Nên dùng cái này nếu muốn có nhiều event handler (nhưng ko phân biệt > thứ tự cái này chạy trước, chạy sau) cho một element. > Lưu ư: hiện tại chỉ biết addEventListener vào thôi chứ chưa biết là có > bao nhiêu event handler, sau này sẽ có :D. > Cheer! :D
> On Jan 7, 8:41 am, Huynh Quoc Huy<huynhquoc...@gmail.com> wrote:
>> Tốt nhất bạn nên gọi hàm doSomeFunction2() trong doSomeFunction
Nếu sử dụng EventListener th́ truyền tham số vào thế nào được ạ?
Khi sử dụng cách inline th́ this trong thằng event handler nó refer luôn đến element đó nên rất tiện khi lấy value; có thể dùng từ khóa this refer đến element theo cách addEventListener theo cách này:
addEventListener(el, 'click', function() { doSomething(1, 2); // alert ra thằng window element //Để alert ra thằng el để lấy value chẳng hạn th́ dùng 1 trong 2 cách sau để truyền context: doSomething.call(el, 1, 2); //Hoặc doSomething.apply(el, [1, 2]);
> > $(document).ready(function() { > > //code của bạn đặt ở đây sẽ được chạy khi dom load xong. > > });
> > Nếu ko phân biệt thứ tự nhiều event handler có thể dùng > > addEventListener như sau (code tớ vẫn đang dùng và ko có vấn đề ǵ). > > Cái removeEventListener chưa dùng lần nào :P.
> > /** > > * Cross browser add event listener method. For 'evt' pass a string > > value with the leading "on" omitted > > * e.g. Util.addEventListener > > (window,'load',myFunctionNameWithoutParenthesis,false); > > * @param obj object to attach event > > * @param evt event name: click, mouseover, focus, blur... > > * @param func function name > > * @param useCapture true or false; if false => use bubbling > > * @static > > * @author hoatle > > * @see http://phrogz.net/JS/AttachEvent_js.txt > > */ > > function addEventListener(obj, evt, fnc, useCapture) { > > if (obj === null || evt === null || fnc === null || useCapture === > > null) { > > debug.warn('all params is required from Util.addEventListener!'); > > return; > > } > > if (!useCapture) useCapture = false; > > if (obj.addEventListener){oatle > > obj.addEventListener(evt, fnc, useCapture); > > } else if (obj.attachEvent) { > > obj.attachEvent('on'+evt, fnc); > > } else{ > > myAttachEvent(obj, evt, fnc); > > obj['on'+evt] = function() { myFireEvent(obj,evt) }; > > }
> > //The following are for browsers like NS4 or IE5Mac which don't > > support either > > //attachEvent or addEventListener > > var myAttachEvent = function(obj, evt, fnc) { > > if (!obj.myEvents) obj.myEvents={}; > > if (!obj.myEvents[evt]) obj.myEvents[evt]=[]; > > var evts = obj.myEvents[evt]; > > evts[evts.length] = fnc; > > }
> > var myFireEvent = function(obj, evt) { > > if (!obj || !obj.myEvents || !obj.myEvents[evt]) return; > > var evts = obj.myEvents[evt]; > > for (var i=0,len=evts.length;i<len;i++) evts[i](); > > } > > }
> > /** > > * removes event listener. > > * @param obj element > > * @param evt event name, 'click', 'blur'. 'focus'... > > * @func function name to be removed if found > > * @author hoatle > > * @static > > * //TODO make sure method cross-browsered > > */ > > function removeEventListener(obj, evt, func) { > > if (obj.removeEventListener) { > > obj.removeEventListener(evt, func, false); > > } else if (obj.detachEvent) {//IE > > obj.detachEvent('on'+evt, func) > > } > > }
> > Sau đó add các thể loại event handler vào:
> > function doSomething() {alert('doSomething()');} > > function doSomething2() {alert('doSomething2()');} > > function doSomethingN() {alert('doSomethingN()');}
> > Nên dùng cái này nếu muốn có nhiều event handler (nhưng ko phân biệt > > thứ tự cái này chạy trước, chạy sau) cho một element. > > Lưu ư: hiện tại chỉ biết addEventListener vào thôi chứ chưa biết là có > > bao nhiêu event handler, sau này sẽ có :D. > > Cheer! :D
> > On Jan 7, 8:41 am, Huynh Quoc Huy<huynhquoc...@gmail.com> wrote:
> >> Tốt nhất bạn nên gọi hàm doSomeFunction2() trong doSomeFunction
> Nếu sử dụng EventListener th́ truyền tham số vào thế nào được ạ?
> Khi sử dụng cách inline th́ this trong thằng event handler nó refer > luôn đến element đó nên rất tiện khi lấy value; có thể dùng từ khóa > this refer đến element theo cách addEventListener theo cách này:
> addEventListener(el, 'click', function() { > doSomething(1, 2); // alert ra thằng window element > //Để alert ra thằng el để lấy value chẳng hạn th́ dùng 1 trong 2 > cách sau để truyền context: > doSomething.call(el, 1, 2); > //Hoặc > doSomething.apply(el, [1, 2]);
> > > $(document).ready(function() { > > > //code của bạn đặt ở đây sẽ được chạy khi dom load xong. > > > });
> > > Nếu ko phân biệt thứ tự nhiều event handler có thể dùng > > > addEventListener như sau (code tớ vẫn đang dùng và ko có vấn đề ǵ). > > > Cái removeEventListener chưa dùng lần nào :P.
> > > //The following are for browsers like NS4 or IE5Mac which don't > > > support either > > > //attachEvent or addEventListener > > > var myAttachEvent = function(obj, evt, fnc) { > > > if (!obj.myEvents) obj.myEvents={}; > > > if (!obj.myEvents[evt]) obj.myEvents[evt]=[]; > > > var evts = obj.myEvents[evt]; > > > evts[evts.length] = fnc; > > > }
> > > Nên dùng cái này nếu muốn có nhiều event handler (nhưng ko phân biệt > > > thứ tự cái này chạy trước, chạy sau) cho một element. > > > Lưu ư: hiện tại chỉ biết addEventListener vào thôi chứ chưa biết là có > > > bao nhiêu event handler, sau này sẽ có :D. > > > Cheer! :D
> > > On Jan 7, 8:41 am, Huynh Quoc Huy<huynhquoc...@gmail.com> wrote:
> > >> Tốt nhất bạn nên gọi hàm doSomeFunction2() trong doSomeFunction
> > Nếu sử dụng EventListener th́ truyền tham số vào thế nào được ạ?
> > Khi sử dụng cách inline th́ this trong thằng event handler nó refer > > luôn đến element đó nên rất tiện khi lấy value; có thể dùng từ khóa > > this refer đến element theo cách addEventListener theo cách này:
> > addEventListener(el, 'click', function() { > > doSomething(1, 2); // alert ra thằng window element > > //Để alert ra thằng el để lấy value chẳng hạn th́ dùng 1 trong 2 > > cách sau để truyền context: > > doSomething.call(el, 1, 2); > > //Hoặc > > doSomething.apply(el, [1, 2]);
> > > > $(document).ready(function() { > > > > //code của bạn đặt ở đây sẽ được chạy khi dom load xong. > > > > });
> > > > Nếu ko phân biệt thứ tự nhiều event handler có thể dùng > > > > addEventListener như sau (code tớ vẫn đang dùng và ko có vấn đề ǵ). > > > > Cái removeEventListener chưa dùng lần nào :P.
> > > > Nên dùng cái này nếu muốn có nhiều event handler (nhưng ko phân biệt > > > > thứ tự cái này chạy trước, chạy sau) cho một element. > > > > Lưu ư: hiện tại chỉ biết addEventListener vào thôi chứ chưa biết là > có > > > > bao nhiêu event handler, sau này sẽ có :D. > > > > Cheer! :D
> > > > On Jan 7, 8:41 am, Huynh Quoc Huy<huynhquoc...@gmail.com> wrote:
> > > >> Tốt nhất bạn nên gọi hàm doSomeFunction2() trong doSomeFunction
> > > Nếu sử dụng EventListener th́ truyền tham số vào thế nào được ạ?
> -- > Bạn nhận được thư này v́ bạn đă được đăng kư vào nhóm Google Groups > "PHPVietnam". > Để đăng bài lên nhóm này, hăy gửi email đến phpvietnam@googlegroups.com. > Để huỷ đăng kư khỏi nhóm này, hăy gửi email tới > phpvietnam+unsubscribe@googlegroups.com<phpvietnam%2Bunsubscribe@googlegrou ps.com> > . > Để biết tuỳ chọn khác, hăy truy cập nhóm này tại > http://groups.google.com/group/phpvietnam?hl=vi.