11540 sujets

JavaScript, DOM et API Web HTML5

Bonjour,
Je travail avec Jquery SVG : http://keith-wood.name/svg.html
Actuellement, je peux dessiner des rectangles, et les relier entre eux grâce à un trait.

Pour cela j'ai 2 boutons : 'Créer rectangle' et 'Créer liaison' chaque bouton mène vers une fonction.
Mon souci : lorsque je créer plusieurs rectangles et qu'ensuite je les relie (clic sur bouton 'liaison', il reste dans ma fonction de création rectangle, comment annuler le clic du rectangle lorsque je clic sur mon bouton liaison ?
J'ai essayé unbind mais ca n'a pas l'air de fonctionner.
Voici ma fonction pour créer mon noeud :

function node(){
$('#svgsketch').bind('click', function(event) {
    var destinationX = parseInt(event.pageX) - parseInt($('#svgsketch').offset().left);  
    var destinationY = parseInt(event.pageY) - parseInt($('#svgsketch').offset().top); 
    offset = ($.browser.msie ? {left: 0, top: 0} : $('#svgsketch').offset()); 
    if (!$.browser.msie) { 
        offset.left -= document.documentElement.scrollLeft || document.body.scrollLeft; 
        offset.top -= document.documentElement.scrollTop || document.body.scrollTop; 
    } 
    start = {X: event.clientX - offset.left, Y: event.clientY - offset.top};
    if($('input[rel=name]').val() != ''){
        drawShape(destinationX,destinationY);
        $('input[rel="name"]').css('borderColor', '#aaa');    
        $('input[rel="name"]').val('');
    } else { 
        $('input[rel="name"]').css('borderColor', 'red');  
        $("#messageError").css({
                top: '0px',
                left: '0px',   
                position: 'fixed',                   
                display:'block'
            }); 
        $('#messageError').show(1000).delay(3000).hide(1000);  
        $('#messageError').html('<span style="margin-left:30px;font-weight:bold;">Name obligatoire pour la cr&#233;ation d\'un noeud</span>');
    }
    return false;   
});

Et ma fonction pour créer la liaison :

function liaison() {
line = sketchpad.line(0,0,0,0,{fill:"red",role:"dragshape",stroke:"red",strokeWidth:1, strokeDashArray:dashArray, id:'temp'});	
$('#svgsketch').mousedown( function(event){
    event.preventDefault();
	event = event.target;
	cx = event.getAttribute('cx');
	cy = event.getAttribute('cy');	
    group = event.parentNode.getAttribute('id'); 
	$('#line1').html(cx);
	$('#line2').html(cy);
    $('#temp').css('display' , 'block');
    xCon = $('circle').attr('cx');
    $('#svgsketch').bind('mousemove' , mousemove);
    $('#svgsketch').bind('mouseup' , mouseup); 
});
var mouseup= function(event){
    $('#temp').css('display' , 'none');
    dashArray = '0'
    event.preventDefault();
	event = event.target;
	cx = event.getAttribute('cx');
	cy = event.getAttribute('cy');	
    group = event.parentNode.getAttribute('id');    
	$('#line3').html(cx);
	$('#line4').html(cy);
    $('#svgsketch').unbind('mousemove' , mousemove); 
	sketchpad.line($("#"+group), $('#line1').html(),$('#line2').html(),$('#line3').html(),$('#line4').html(),{fill:"red",role:"dragshape",stroke:"red",strokeWidth:1,strokeDashArray:dashArray});	     
};
var mousemove = function(event){
    $("#temp").css('display' , 'block');
    var destinationX = parseInt(event.pageX) - parseInt($('#svgsketch').offset().left);  
    var destinationY = parseInt(event.pageY) - parseInt($('#svgsketch').offset().top);     
    sketchpad.change(line, {x1:$('#line1').html(), y1:$('#line2').html(), x2:destinationX, y2:destinationY});
};

}

Je ne sais pas si je suis bien claire Smiley confus
Merci de vos réponses.
Modifié par Meloo (08 Mar 2013 - 11:43)
Bonjour Meloo,
Peux-tu m'aider a créer un bouton qui permet de dessiner un rectangle sur un canvas qu'on a déjà créer? et merci d'avance.
Bonjour,

Essai de rajouter à la toute première ligne de ta function liaison() { ceci :

document.getElementById("").disabled=true;

Ensuite tu crée un autre bouton "activation" avec un onclick="function enable()" :

function enable()
{
document.getElementById("").disabled=false;
}


Puisque ton .unbind ne semble pas fonctionner.
Je n'ai pas tester la commande, mais je pense que ça pourrait t'aider.
En gros quand tu cliquera sur "liaison" celà devra désactiver la création des actions sur ton bouton "création" via le disable=true.
N'oublie pas de rajouter les id entre les "" dans getElementById("").
Id des boutons (disabled = bouton création liaison) et (enable = id bouton qui réactivera)
Modifié par Nyco (01 May 2013 - 14:33)