gatsu35 Blablaté par Harko | MacIntoc a écrit :
Code :
- var input=document.createElement('input');
- input.setAttribute('type', 'submit');
- input.setAttribute('value', 'submit');
- if(_IE){
- input.attachEvent(
- 'onclick',
- function(){
- var form=window.event.srcElement.form;
- form.setAttribute('action', 'apercu_modif.php');
- form.submit();
- }
- );
- }else{
- input.addEventListener(
- 'click',
- function(evt){
- var form=evt.target.form;
- form.setAttribute('action', 'apercu_modif.php');
- form.submit();
- },
- false
- );
- }
- document.getElementByTagName('body')[0].appendChild(input);
| C'est préférable de passer par le DOM.
|
Encore faut-il que ton code marche sachant que le fait de setter le type d'un input fait gueuler IE5/6. et puis en plus ton code, si fallait faire propre on ferait :
Code :
- var input=document.createElement('input');
- setType(input, "submit" );
- input.setAttribute('value', 'submit');
- addEvent(input, 'click', function() {
- var form=this.form; //pas besoin de passer par un quelconque event à la con sachant que Form est une référence direct au formulaire englobant le input.
- form.setAttribute('action', 'apercu_modif.php');
- form.submit();
- });
- document.body.appendChild(input); //et oui il y a aussi une référence directe au body.
- function addEvent( obj, type, fn ) {
- if (obj.addEventListener)
- obj.addEventListener( type, fn, false );
- else if (obj.attachEvent)
- {
- obj["e"+type+fn] = fn;
- obj[type+fn] = function() { obj["e"+type+fn]( window.event ); }
- obj.attachEvent( "on"+type, obj[type+fn] );
- }
- }
- function setType(node, type) {
- try {
- node.type = type;
- } catch(e) {
- if (node.outerHTML) {
- node.outerHTML=node.outerHTML.replace(/\btype=\w+\b/,'type="text"');
- }
- }
- }
| addEvent étant une fonction simple, utile et efficace pour ajouter des events sur les objets que tu trouveras ici : http://www.quirksmode.org/blog/arc [...] ner_1.html setType étant une fonction que j'ai codé un peu porcasse mais efficace pour pallier au problème puisque IE plantait lorsqu'on veut setter le type d'un input. et accessoirement les if(_IE) on peut s'en passer dans ton cas, il suffit de faire tout simplement :
Code :
- if (window.attachEvent) {
- input.attachEvent = [...]
- } else {
- [...]
- }
| Message édité par gatsu35 le 21-05-2007 à 00:54:54
|