IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Struts 1 Java Discussion :

[Struts]2 Threads identiques quand j'appelle une action


Sujet :

Struts 1 Java

  1. #1
    Membre régulier Avatar de seb55555
    Profil pro
    Inscrit en
    Août 2004
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 117
    Points : 119
    Points
    119
    Par défaut [Struts]2 Threads identiques quand j'appelle une action
    Bonjour,
    J'ai une appli struts, et lorsque, dans ma jsp, j'appelle mon action, j'ai 2 Threads identiques qui se créé et du coup l'action est appelée 2 fois.
    Je ne comprend pas se qui provoque ça puisque je n'ai pas le pb ailleurs.

    Si quelqu'un a une idée (même un soupçon), je suis preneur...

    Merci.


    [Modéré par Didier] : ajout de tag dans le titre - Les règles du forum Java

  2. #2
    Nouveau membre du Club
    Inscrit en
    Novembre 2003
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 26
    Points : 29
    Points
    29
    Par défaut
    dans ton formulaire struts ... as tu mis un un tag "html:image" ??

    Si oui, ce tags correspond a un bouton submit de type image ....

    Alors la cause de ton probleme peut etre:
    Si tu as rajoute un evenement onclick() avec du javascript dans le tag, avec un "this.form.submit();" dans ta fonction javascript, le formulaire sera envoyé deux fois et l'action executee deux fois par la meme occasion.

    je sais pas si ca pourra resoudre ton probleme mais c'est un cas que j'ai souvent rencontré en maintenance de code .... donc ....

    LG

  3. #3
    Membre régulier Avatar de seb55555
    Profil pro
    Inscrit en
    Août 2004
    Messages
    117
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 117
    Points : 119
    Points
    119
    Par défaut
    En effet, j'ai quelquechose dans le genre.

    Le probleme venait en fait de la fonction javascript dans lequel il y avait :

    form.action='monaction';
    ET
    form.submit();

    alors que visiblement le form.action suffit.


    Enfin, merci, du tuyau...

  4. #4
    Nouveau membre du Club
    Inscrit en
    Novembre 2003
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 26
    Points : 29
    Points
    29
    Par défaut
    de rien ...g galeré assez avant de connaitre le truc ...lol

    heureux d'avoir pu t'aider ...



    PS: Oublie pas de tager ton post comme [RESOLU]

    LG

  5. #5
    lr
    lr est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    338
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Octobre 2003
    Messages : 338
    Points : 114
    Points
    114
    Par défaut
    Salut, je sais que ce message date un peu mais j'ai un problème similaire.

    Mon action est appelée deux fois. Pourtant je ne fais aucune manipulation javascript (à part les validations générées par Struts) et d'ailleurs j'ai même désactivé javascript dans firefox et le résultat est le même.

    J'ai fait d'autres tests. J'ai créé un action avec les même paramètres et la même méthode execute. Lorsque je change

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <html:form action="jobs/EditSubmit.do" method="post" onsubmit="alert('submit');return validateJobForm(this) ">
    en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <html:form action="test/Prov.do" method="post" onsubmit="alert('submit');return validateJobForm(this) ">
    la nouvelle action que j'ai créé est appelée... une seule fois !

    Comment expliquer ça ?

    Si jamais, ci-dessous ma page jsp, le code html généré et mes deux actions.

    Merci d'avance pour votre aide
    a+Lilian

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
     
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
    <%@ taglib uri="/WEB-INF/struts-bean.tld" prefix="bean" %>
    <%@ taglib uri="/WEB-INF/fmt.tld" prefix="fmt" %>
    <%@ taglib uri="/WEB-INF/struts-html.tld" prefix="html" %>
    <%@ taglib uri="/WEB-INF/struts-tiles.tld" prefix="tiles" %>
     
     
    <h1 class="pageTitle"><bean:message key="job.edit.title" /></h1>
     
     
    <!-- ************************************ -->
    <html:javascript formName="jobForm" />
    <html:errors />
    <html:form action="jobs/EditSubmit.do" method="post" onsubmit="alert('submit');return validateJobForm(this) ">
    	<html:hidden property="page" value="1"/>
    	<table><!-- une ligne/colonne (cellule) par section -->
    		<tr>
    			<td><!-- instructions -->
     
    				<tiles:insert page="new_instructions.jsp" />
     
    			</td>
    		</tr>
    		<tr>
    			<td>&nbsp;</td>
    		</tr>
    		<tr>
    			<td><!-- généralités -->
     
    				<tiles:insert page="new_general.jsp" />
     
    			</td>
    		</tr>
    		<tr>
    			<td>&nbsp;</td>
    		</tr>
    		<tr>
    			<td><!-- contacts -->
    				<h3><bean:message key="job.clientcontacts" /></h3>
    			</td>
    		</tr>
    		<tr>
    			<td>
     
    				<tiles:insert page="new_contacts.jsp" />
     
    			</td>
    		</tr>
    		<tr>
    			<td>&nbsp;</td>
    		</tr>
    		<tr>
    			<td><!-- description -->
     
    				<tiles:insert page="new_description.jsp" />
     
    			</td>
    		</tr>
    		<tr>
    			<td>&nbsp;</td>
    		</tr>
    		<tr>
    			<td><!-- tarif -->
     
    				<tiles:insert page="new_tarif.jsp" />
     
    			</td>
    		</tr>
    		<tr>
    			<td>&nbsp;</td>
    		</tr>
    		<tr>
    			<td><!-- divers -->
    				<tiles:insert page="new_misc.jsp" />
    			</td>
    		</tr>
    		<tr>
    			<td>&nbsp;</td>
    		</tr>	
    		<tr>
    			<td colspan="12">
    				<html:submit property="currentStep"><bean:message key="job.edit.save" /></html:submit>
    			</td>
    		</tr>
    	</table>
     
    </html:form>
    [code:1:90dc7b16ec]


    <html>
    <head>
    <title>
    BAB-Admin - Application de gestion pour la Boîte à Boulots
    </title>
    <link rel="stylesheet" href="style.css">
    <link rel="stylesheet" href="../style.css">
    <link rel="stylesheet" href="../javascript/tigra_menu/menu.css">
    <script language="javascript" src="../javascript/tools.js"></script>

    <script language="javascript" src="../javascript/dom.js"></script>

    <script type="text/javascript" src="../javascript/datepicker/datepickercontrol.js"></script>
    <link type="text/css" rel="stylesheet" href="../javascript/datepicker/datepickercontrol.css">
    <script type="text/javascript" src="../javascript/jobs/tarifs.js"></script>
    <script type="text/javascript" src="../javascript/jobs/contacts.js"></script>
    </head>

    <body onload="checkboxHideOrDisplay&#40;document.forms&#91;'jobForm'&#93;.elements&#91;'useClientAddress'&#93;, 'jobAddressComplete', true&#41;;manageBabCharges&#40;document.forms&#91;'jobForm'&#93;.elements&#91;'jobTarifAdmin'&#93;, 'babCharges', 2, 1&#41;; manageTarifLoad&#40; 'jobTarifBab', 'jobTarifSpecial', 'jobTarifFixed' &#41;;hideNonClientContacts&#40; document.getElementById&#40;'clientLB'&#41;, 'abcContact', 'abcLineContact', contacts, 'lineContactDefault',false &#41;;">

    <script language="JavaScript" src="../javascript/tigra_menu/menu.js"></script>
    <!-- items structure. menu hierarchy and links are stored there -->
    <script language="JavaScript" src="../javascript/tigra_menu/menu_items.js"></script>
    <!-- files with geometry and styles structures -->
    <script language="JavaScript" src="../javascript/tigra_menu/menu_tpl.js"></script>
    <script language="JavaScript">
    <!--//
    // Note where menu initialization block is located in HTML document.
    // Don't try to position menu locating menu initialization block in
    // some table cell or other HTML element. Always put it before </body>

    // each menu gets two parameters &#40;see demo files&#41;
    // 1. items structure
    // 2. geometry structure

    new menu &#40;MENU_ITEMS, MENU_POS&#41;;
    // make sure files containing definitions for these variables are linked to the document
    // if you got some javascript error like "MENU_POS is not defined", then you've made syntax
    // error in menu_tpl.js file or that file isn't linked properly.

    // also take a look at stylesheets loaded in header in order to set styles
    //-->
    </script>
    <table width="100%">
    <tr>
    <td bgcolor="#66A1CE"><img height="6"></td>

    </tr>
    <tr>
    <td>
    <h2 class="applicationTitle">BAB-Admin - Application de gestion pour la Boîte à Boulots</h2>
    </td>
    </tr>
    </table>
    <table>
    <tr>

    <td valign="top">







    <h1 class="pageTitle">Modifier la fiche boulot</h1>


    <!-- ************************************ -->
    <script type="text/javascript" language="Javascript1.1">

    <!-- Begin

    var bCancel = false;

    function validateJobForm&#40;form&#41; &#123;
    if &#40;bCancel&#41;
    return true;
    else
    var formValidationResult;
    formValidationResult = validateRequired&#40;form&#41; & validateDate&#40;form&#41; & validateEmail&#40;form&#41; & validateFloat&#40;form&#41; & validateMask&#40;form&#41; & validateInteger&#40;form&#41;;
    return &#40;formValidationResult == 1&#41;;
    &#125;

    function jobForm_required &#40;&#41; &#123;
    this.a0 = new Array&#40;"beginDate", "La date de la demande est obligatoire", new Function &#40;"varName", "this.datePattern='dd/MM/yyyy'; return this&#91;varName&#93;;"&#41;&#41;;
    this.a1 = new Array&#40;"jobClientId", "Le choix du client est obligatoire", new Function &#40;"varName", " return this&#91;varName&#93;;"&#41;&#41;;
    this.a2 = new Array&#40;"job.title", "L'intitulé du job est obligatoire", new Function &#40;"varName", " return this&#91;varName&#93;;"&#41;&#41;;
    this.a3 = new Array&#40;"jobContactForBABid", "Le choix d'un collaborateur de la BAB responsable du dossier est obligatoire", new Function &#40;"varName", " return this&#91;varName&#93;;"&#41;&#41;;
    &#125;

    function jobForm_DateValidations &#40;&#41; &#123;
    this.a0 = new Array&#40;"beginDate", "La date de la demande n'a pas été entrée correctement &#40;jj/mm/aaaa&#41;", new Function &#40;"varName", "this.datePattern='dd/MM/yyyy'; return this&#91;varName&#93;;"&#41;&#41;;
    &#125;

    function jobForm_email &#40;&#41; &#123;
    this.a0 = new Array&#40;"firstNewContactEmail", "L'adresse email entrée n'est pas valide", new Function &#40;"varName", " return this&#91;varName&#93;;"&#41;&#41;;
    this.a1 = new Array&#40;"secondNewContactEmail", "L'adresse email entrée n'est pas valide", new Function &#40;"varName", " return this&#91;varName&#93;;"&#41;&#41;;
    this.a2 = new Array&#40;"thirdNewContactEmail", "L'adresse email entrée n'est pas valide", new Function &#40;"varName", " return this&#91;varName&#93;;"&#41;&#41;;
    this.a3 = new Array&#40;"fourthNewContactEmail", "L'adresse email entrée n'est pas valide", new Function &#40;"varName", " return this&#91;varName&#93;;"&#41;&#41;;
    &#125;

    function jobForm_FloatValidations &#40;&#41; &#123;
    this.a0 = new Array&#40;"jobTarifBrutAmountPerHour", "Le montant entré n'est pas valide", new Function &#40;"varName", " return this&#91;varName&#93;;"&#41;&#41;;
    this.a1 = new Array&#40;"jobTarifBrutAmountPerDay", "Le montant entré n'est pas valide", new Function &#40;"varName", " return this&#91;varName&#93;;"&#41;&#41;;
    this.a2 = new Array&#40;"jobTarifBrutAmountPerWeek", "Le montant entré n'est pas valide", new Function &#40;"varName", " return this&#91;varName&#93;;"&#41;&#41;;
    this.a3 = new Array&#40;"jobTarifBrutAmountTotal", "Le montant entré n'est pas valide", new Function &#40;"varName", " return this&#91;varName&#93;;"&#41;&#41;;
    this.a4 = new Array&#40;"jobOtherChargesAmount", "Le montant entré n'est pas valide", new Function &#40;"varName", " return this&#91;varName&#93;;"&#41;&#41;;
    &#125;

    function jobForm_mask &#40;&#41; &#123;
    &#125;

    function jobForm_IntegerValidations &#40;&#41; &#123;
    &#125;




    /*$RCSfile&#58; validateRequired.js,v $ $Revision&#58; 1.13 $ $Date&#58; 2004/03/28 16&#58;53&#58;21 $ */
    /**
    * Check to see if fields must contain a value.
    * Fields are not checked if they are disabled.
    * <p>
    * @param form The form validation is taking place on.
    */

    function validateRequired&#40;form&#41; &#123;
    var isValid = true;
    var focusField = null;
    var i = 0;
    var fields = new Array&#40;&#41;;
    var formName = form.getAttributeNode&#40;"name"&#41;;

    oRequired = eval&#40;'new ' + formName.value + '_required&#40;&#41;'&#41;;

    for &#40;x in oRequired&#41; &#123;
    var field = form&#91;oRequired&#91;x&#93;&#91;0&#93;&#93;;

    if &#40;&#40;field.type == 'hidden' ||
    field.type == 'text' ||
    field.type == 'textarea' ||
    field.type == 'file' ||
    field.type == 'checkbox' ||
    field.type == 'select-one' ||
    field.type == 'password'&#41; &&
    field.disabled == false&#41; &#123;

    var value = '';
    // get field's value
    if &#40;field.type == "select-one"&#41; &#123;
    var si = field.selectedIndex;
    if &#40;si >= 0&#41; &#123;
    value = field.options&#91;si&#93;.value;
    &#125;
    &#125; else if &#40;field.type == 'checkbox'&#41; &#123;
    if &#40;field.checked&#41; &#123;
    value = field.value;
    &#125;
    &#125; else &#123;
    value = field.value;
    &#125;

    if &#40;trim&#40;value&#41;.length == 0&#41; &#123;

    if &#40;i == 0&#41; &#123;
    focusField = field;
    &#125;
    fields&#91;i++&#93; = oRequired&#91;x&#93;&#91;1&#93;;
    isValid = false;
    &#125;
    &#125; else if &#40;field.type == "select-multiple"&#41; &#123;
    var numOptions = field.options.length;
    lastSelected=-1;
    for&#40;loop=numOptions-1;loop>=0;loop--&#41; &#123;
    if&#40;field.options&#91;loop&#93;.selected&#41; &#123;
    lastSelected = loop;
    value = field.options&#91;loop&#93;.value;
    break;
    &#125;
    &#125;
    if&#40;lastSelected < 0 || trim&#40;value&#41;.length == 0&#41; &#123;
    if&#40;i == 0&#41; &#123;
    focusField = field;
    &#125;
    fields&#91;i++&#93; = oRequired&#91;x&#93;&#91;1&#93;;
    isValid=false;
    &#125;
    &#125; else if &#40;&#40;field.length > 0&#41; && &#40;field&#91;0&#93;.type == 'radio' || field&#91;0&#93;.type == 'checkbox'&#41;&#41; &#123;
    isChecked=-1;
    for &#40;loop=0;loop < field.length;loop++&#41; &#123;
    if &#40;field&#91;loop&#93;.checked&#41; &#123;
    isChecked=loop;
    break; // only one needs to be checked
    &#125;
    &#125;
    if &#40;isChecked < 0&#41; &#123;
    if &#40;i == 0&#41; &#123;
    focusField = field&#91;0&#93;;
    &#125;
    fields&#91;i++&#93; = oRequired&#91;x&#93;&#91;1&#93;;
    isValid=false;
    &#125;
    &#125;
    &#125;
    if &#40;fields.length > 0&#41; &#123;
    focusField.focus&#40;&#41;;
    alert&#40;fields.join&#40;'\n'&#41;&#41;;
    &#125;
    return isValid;
    &#125;

    // Trim whitespace from left and right sides of s.
    function trim&#40;s&#41; &#123;
    return s.replace&#40; /^\s*/, "" &#41;.replace&#40; /\s*$/, "" &#41;;
    &#125;


    /*$RCSfile&#58; validateInteger.js,v $ $Revision&#58; 1.9 $ $Date&#58; 2004/03/28 16&#58;53&#58;21 $ */
    /**
    * Check to see if fields are a valid integer.
    * Fields are not checked if they are disabled.
    * <p>
    * @param form The form validation is taking place on.
    */
    function validateInteger&#40;form&#41; &#123;
    var bValid = true;
    var focusField = null;
    var i = 0;
    var fields = new Array&#40;&#41;;
    var formName = form.getAttributeNode&#40;"name"&#41;;

    oInteger = eval&#40;'new ' + formName.value + '_IntegerValidations&#40;&#41;'&#41;;
    for &#40;x in oInteger&#41; &#123;
    var field = form&#91;oInteger&#91;x&#93;&#91;0&#93;&#93;;

    if &#40;&#40;field.type == 'hidden' ||
    field.type == 'text' ||
    field.type == 'textarea' ||
    field.type == 'select-one' ||
    field.type == 'radio'&#41; &&
    field.disabled == false&#41; &#123;

    var value = '';
    // get field's value
    if &#40;field.type == "select-one"&#41; &#123;
    var si = field.selectedIndex;
    if &#40;si >= 0&#41; &#123;
    value = field.options&#91;si&#93;.value;
    &#125;
    &#125; else &#123;
    value = field.value;
    &#125;

    if &#40;value.length > 0&#41; &#123;

    if &#40;!isAllDigits&#40;value&#41;&#41; &#123;
    bValid = false;
    if &#40;i == 0&#41; &#123;
    focusField = field;
    &#125;
    fields&#91;i++&#93; = oInteger&#91;x&#93;&#91;1&#93;;

    &#125; else &#123;
    var iValue = parseInt&#40;value&#41;;
    if &#40;isNaN&#40;iValue&#41; || !&#40;iValue >= -2147483648 && iValue <= 2147483647&#41;&#41; &#123;
    if &#40;i == 0&#41; &#123;
    focusField = field;
    &#125;
    fields&#91;i++&#93; = oInteger&#91;x&#93;&#91;1&#93;;
    bValid = false;
    &#125;
    &#125;
    &#125;
    &#125;
    &#125;
    if &#40;fields.length > 0&#41; &#123;
    focusField.focus&#40;&#41;;
    alert&#40;fields.join&#40;'\n'&#41;&#41;;
    &#125;
    return bValid;
    &#125;

    function isAllDigits&#40;argvalue&#41; &#123;
    argvalue = argvalue.toString&#40;&#41;;
    var validChars = "0123456789";
    var startFrom = 0;
    if &#40;argvalue.substring&#40;0, 2&#41; == "0x"&#41; &#123;
    validChars = "0123456789abcdefABCDEF";
    startFrom = 2;
    &#125; else if &#40;argvalue.charAt&#40;0&#41; == "0"&#41; &#123;
    validChars = "01234567";
    startFrom = 1;
    &#125; else if &#40;argvalue.charAt&#40;0&#41; == "-"&#41; &#123;
    startFrom = 1;
    &#125;

    for &#40;var n = startFrom; n < argvalue.length; n++&#41; &#123;
    if &#40;validChars.indexOf&#40;argvalue.substring&#40;n, n+1&#41;&#41; == -1&#41; return false;
    &#125;
    return true;
    &#125;


    /*$RCSfile&#58; validateFloat.js,v $ $Revision&#58; 1.11 $ $Date&#58; 2004/03/28 16&#58;53&#58;21 $ */
    /**
    * Check to see if fields are a valid float.
    * Fields are not checked if they are disabled.
    * <p>
    * @param form The form validation is taking place on.
    */
    function validateFloat&#40;form&#41; &#123;
    var bValid = true;
    var focusField = null;
    var i = 0;
    var fields = new Array&#40;&#41;;
    var formName = form.getAttributeNode&#40;"name"&#41;;

    oFloat = eval&#40;'new ' + formName.value + '_FloatValidations&#40;&#41;'&#41;;
    for &#40;x in oFloat&#41; &#123;
    var field = form&#91;oFloat&#91;x&#93;&#91;0&#93;&#93;;

    if &#40;&#40;field.type == 'hidden' ||
    field.type == 'text' ||
    field.type == 'textarea' ||
    field.type == 'select-one' ||
    field.type == 'radio'&#41; &&
    field.disabled == false&#41; &#123;

    var value = '';
    // get field's value
    if &#40;field.type == "select-one"&#41; &#123;
    var si = field.selectedIndex;
    if &#40;si >= 0&#41; &#123;
    value = field.options&#91;si&#93;.value;
    &#125;
    &#125; else &#123;
    value = field.value;
    &#125;

    if &#40;value.length > 0&#41; &#123;
    // remove '.' before checking digits
    var tempArray = value.split&#40;'.'&#41;;
    //Strip off leading '0'
    var zeroIndex = 0;
    var joinedString= tempArray.join&#40;''&#41;;
    while &#40;joinedString.charAt&#40;zeroIndex&#41; == '0'&#41; &#123;
    zeroIndex++;
    &#125;
    var noZeroString = joinedString.substring&#40;zeroIndex,joinedString.length&#41;;

    if &#40;!isAllDigits&#40;noZeroString&#41;&#41; &#123;
    bValid = false;
    if &#40;i == 0&#41; &#123;
    focusField = field;
    &#125;
    fields&#91;i++&#93; = oFloat&#91;x&#93;&#91;1&#93;;

    &#125; else &#123;
    var iValue = parseFloat&#40;value&#41;;
    if &#40;isNaN&#40;iValue&#41;&#41; &#123;
    if &#40;i == 0&#41; &#123;
    focusField = field;
    &#125;
    fields&#91;i++&#93; = oFloat&#91;x&#93;&#91;1&#93;;
    bValid = false;
    &#125;
    &#125;
    &#125;
    &#125;
    &#125;
    if &#40;fields.length > 0&#41; &#123;
    focusField.focus&#40;&#41;;
    alert&#40;fields.join&#40;'\n'&#41;&#41;;
    &#125;
    return bValid;
    &#125;


    /*$RCSfile&#58; validateEmail.js,v $ $Revision&#58; 1.9 $ $Date&#58; 2004/03/28 16&#58;53&#58;21 $ */
    /**
    * Check to see if fields are a valid email address.
    * Fields are not checked if they are disabled.
    * <p>
    * @param form The form validation is taking place on.
    */
    function validateEmail&#40;form&#41; &#123;
    var bValid = true;
    var focusField = null;
    var i = 0;
    var fields = new Array&#40;&#41;;
    var formName = form.getAttributeNode&#40;"name"&#41;;


    oEmail = eval&#40;'new ' + formName.value + '_email&#40;&#41;'&#41;;

    for &#40;x in oEmail&#41; &#123;
    var field = form&#91;oEmail&#91;x&#93;&#91;0&#93;&#93;;
    if &#40;&#40;field.type == 'hidden' ||
    field.type == 'text' ||
    field.type == 'textarea'&#41; &&
    &#40;field.value.length > 0&#41; &&
    field.disabled == false&#41; &#123;
    if &#40;!checkEmail&#40;field.value&#41;&#41; &#123;
    if &#40;i == 0&#41; &#123;
    focusField = field;
    &#125;
    fields&#91;i++&#93; = oEmail&#91;x&#93;&#91;1&#93;;
    bValid = false;
    &#125;
    &#125;
    &#125;
    if &#40;fields.length > 0&#41; &#123;
    focusField.focus&#40;&#41;;
    alert&#40;fields.join&#40;'\n'&#41;&#41;;
    &#125;
    return bValid;
    &#125;

    /**
    * Reference&#58; Sandeep V. Tamhankar &#40;stamhankar@hotmail.com&#41;,
    * http&#58;//javascript.internet.com
    */
    function checkEmail&#40;emailStr&#41; &#123;
    if &#40;emailStr.length == 0&#41; &#123;
    return true;
    &#125;
    var emailPat=/^&#40;.+&#41;@&#40;.+&#41;$/;
    var specialChars="\\&#40;\\&#41;<>@,;&#58;\\\\\\\"\\.\\&#91;\\&#93;";
    var validChars="\&#91;^\\s" + specialChars + "\&#93;";
    var quotedUser="&#40;\"&#91;^\"&#93;*\"&#41;";
    var ipDomainPat=/^&#40;\d&#123;1,3&#125;&#41;&#91;.&#93;&#40;\d&#123;1,3&#125;&#41;&#91;.&#93;&#40;\d&#123;1,3&#125;&#41;&#91;.&#93;&#40;\d&#123;1,3&#125;&#41;$/;
    var atom=validChars + '+';
    var word="&#40;" + atom + "|" + quotedUser + "&#41;";
    var userPat=new RegExp&#40;"^" + word + "&#40;\\." + word + "&#41;*$"&#41;;
    var domainPat=new RegExp&#40;"^" + atom + "&#40;\\." + atom + "&#41;*$"&#41;;
    var matchArray=emailStr.match&#40;emailPat&#41;;
    if &#40;matchArray == null&#41; &#123;
    return false;
    &#125;
    var user=matchArray&#91;1&#93;;
    var domain=matchArray&#91;2&#93;;
    if &#40;user.match&#40;userPat&#41; == null&#41; &#123;
    return false;
    &#125;
    var IPArray = domain.match&#40;ipDomainPat&#41;;
    if &#40;IPArray != null&#41; &#123;
    for &#40;var i = 1; i <= 4; i++&#41; &#123;
    if &#40;IPArray&#91;i&#93; > 255&#41; &#123;
    return false;
    &#125;
    &#125;
    return true;
    &#125;
    var domainArray=domain.match&#40;domainPat&#41;;
    if &#40;domainArray == null&#41; &#123;
    return false;
    &#125;
    var atomPat=new RegExp&#40;atom,"g"&#41;;
    var domArr=domain.match&#40;atomPat&#41;;
    var len=domArr.length;
    if &#40;&#40;domArr&#91;domArr.length-1&#93;.length < 2&#41; ||
    &#40;domArr&#91;domArr.length-1&#93;.length > 3&#41;&#41; &#123;
    return false;
    &#125;
    if &#40;len < 2&#41; &#123;
    return false;
    &#125;
    return true;
    &#125;




    /*$RCSfile&#58; validateMask.js,v $ $Revision&#58; 1.10 $ $Date&#58; 2004/03/28 16&#58;53&#58;21 $ */
    /**
    * Check to see if fields are a valid using a regular expression.
    * Fields are not checked if they are disabled.
    * <p>
    * @param form The form validation is taking place on.
    */
    function validateMask&#40;form&#41; &#123;
    var isValid = true;
    var focusField = null;
    var i = 0;
    var fields = new Array&#40;&#41;;
    var formName = form.getAttributeNode&#40;"name"&#41;;

    oMasked = eval&#40;'new ' + formName.value + '_mask&#40;&#41;'&#41;;
    for &#40;x in oMasked&#41; &#123;
    var field = form&#91;oMasked&#91;x&#93;&#91;0&#93;&#93;;

    if &#40;&#40;field.type == 'hidden' ||
    field.type == 'text' ||
    field.type == 'textarea' ||
    field.type == 'file'&#41; &&
    &#40;field.value.length > 0&#41; &&
    field.disabled == false&#41; &#123;

    if &#40;!matchPattern&#40;field.value, oMasked&#91;x&#93;&#91;2&#93;&#40;"mask"&#41;&#41;&#41; &#123;
    if &#40;i == 0&#41; &#123;
    focusField = field;
    &#125;
    fields&#91;i++&#93; = oMasked&#91;x&#93;&#91;1&#93;;
    isValid = false;
    &#125;
    &#125;
    &#125;

    if &#40;fields.length > 0&#41; &#123;
    focusField.focus&#40;&#41;;
    alert&#40;fields.join&#40;'\n'&#41;&#41;;
    &#125;
    return isValid;
    &#125;

    function matchPattern&#40;value, mask&#41; &#123;
    return mask.exec&#40;value&#41;;
    &#125;


    /*$RCSfile&#58; validateDate.js,v $ $Revision&#58; 1.10 $ $Date&#58; 2004/03/28 16&#58;53&#58;21 $ */
    /**
    * Check to see if fields are a valid date.
    * Fields are not checked if they are disabled.
    * <p>
    * @param form The form validation is taking place on.
    */
    function validateDate&#40;form&#41; &#123;
    var bValid = true;
    var focusField = null;
    var i = 0;
    var fields = new Array&#40;&#41;;
    var formName = form.getAttributeNode&#40;"name"&#41;;

    oDate = eval&#40;'new ' + formName.value + '_DateValidations&#40;&#41;'&#41;;

    for &#40;x in oDate&#41; &#123;
    var field = form&#91;oDate&#91;x&#93;&#91;0&#93;&#93;;
    var value = field.value;
    var datePattern = oDate&#91;x&#93;&#91;2&#93;&#40;"datePatternStrict"&#41;;
    // try loose pattern
    if &#40;datePattern == null&#41;
    datePattern = oDate&#91;x&#93;&#91;2&#93;&#40;"datePattern"&#41;;
    if &#40;&#40;field.type == 'hidden' ||
    field.type == 'text' ||
    field.type == 'textarea'&#41; &&
    &#40;value.length > 0&#41; && &#40;datePattern.length > 0&#41; &&
    field.disabled == false&#41; &#123;
    var MONTH = "MM";
    var DAY = "dd";
    var YEAR = "yyyy";
    var orderMonth = datePattern.indexOf&#40;MONTH&#41;;
    var orderDay = datePattern.indexOf&#40;DAY&#41;;
    var orderYear = datePattern.indexOf&#40;YEAR&#41;;
    if &#40;&#40;orderDay < orderYear && orderDay > orderMonth&#41;&#41; &#123;
    var iDelim1 = orderMonth + MONTH.length;
    var iDelim2 = orderDay + DAY.length;
    var delim1 = datePattern.substring&#40;iDelim1, iDelim1 + 1&#41;;
    var delim2 = datePattern.substring&#40;iDelim2, iDelim2 + 1&#41;;
    if &#40;iDelim1 == orderDay && iDelim2 == orderYear&#41; &#123;
    dateRegexp = new RegExp&#40;"^&#40;\\d&#123;2&#125;&#41;&#40;\\d&#123;2&#125;&#41;&#40;\\d&#123;4&#125;&#41;$"&#41;;
    &#125; else if &#40;iDelim1 == orderDay&#41; &#123;
    dateRegexp = new RegExp&#40;"^&#40;\\d&#123;2&#125;&#41;&#40;\\d&#123;2&#125;&#41;&#91;" + delim2 + "&#93;&#40;\\d&#123;4&#125;&#41;$"&#41;;
    &#125; else if &#40;iDelim2 == orderYear&#41; &#123;
    dateRegexp = new RegExp&#40;"^&#40;\\d&#123;2&#125;&#41;&#91;" + delim1 + "&#93;&#40;\\d&#123;2&#125;&#41;&#40;\\d&#123;4&#125;&#41;$"&#41;;
    &#125; else &#123;
    dateRegexp = new RegExp&#40;"^&#40;\\d&#123;2&#125;&#41;&#91;" + delim1 + "&#93;&#40;\\d&#123;2&#125;&#41;&#91;" + delim2 + "&#93;&#40;\\d&#123;4&#125;&#41;$"&#41;;
    &#125;
    var matched = dateRegexp.exec&#40;value&#41;;
    if&#40;matched != null&#41; &#123;
    if &#40;!isValidDate&#40;matched&#91;2&#93;, matched&#91;1&#93;, matched&#91;3&#93;&#41;&#41; &#123;
    if &#40;i == 0&#41; &#123;
    focusField = field;
    &#125;
    fields&#91;i++&#93; = oDate&#91;x&#93;&#91;1&#93;;
    bValid = false;
    &#125;
    &#125; else &#123;
    if &#40;i == 0&#41; &#123;
    focusField = field;
    &#125;
    fields&#91;i++&#93; = oDate&#91;x&#93;&#91;1&#93;;
    bValid = false;
    &#125;
    &#125; else if &#40;&#40;orderMonth < orderYear && orderMonth > orderDay&#41;&#41; &#123;
    var iDelim1 = orderDay + DAY.length;
    var iDelim2 = orderMonth + MONTH.length;
    var delim1 = datePattern.substring&#40;iDelim1, iDelim1 + 1&#41;;
    var delim2 = datePattern.substring&#40;iDelim2, iDelim2 + 1&#41;;
    if &#40;iDelim1 == orderMonth && iDelim2 == orderYear&#41; &#123;
    dateRegexp = new RegExp&#40;"^&#40;\\d&#123;2&#125;&#41;&#40;\\d&#123;2&#125;&#41;&#40;\\d&#123;4&#125;&#41;$"&#41;;
    &#125; else if &#40;iDelim1 == orderMonth&#41; &#123;
    dateRegexp = new RegExp&#40;"^&#40;\\d&#123;2&#125;&#41;&#40;\\d&#123;2&#125;&#41;&#91;" + delim2 + "&#93;&#40;\\d&#123;4&#125;&#41;$"&#41;;
    &#125; else if &#40;iDelim2 == orderYear&#41; &#123;
    dateRegexp = new RegExp&#40;"^&#40;\\d&#123;2&#125;&#41;&#91;" + delim1 + "&#93;&#40;\\d&#123;2&#125;&#41;&#40;\\d&#123;4&#125;&#41;$"&#41;;
    &#125; else &#123;
    dateRegexp = new RegExp&#40;"^&#40;\\d&#123;2&#125;&#41;&#91;" + delim1 + "&#93;&#40;\\d&#123;2&#125;&#41;&#91;" + delim2 + "&#93;&#40;\\d&#123;4&#125;&#41;$"&#41;;
    &#125;
    var matched = dateRegexp.exec&#40;value&#41;;
    if&#40;matched != null&#41; &#123;
    if &#40;!isValidDate&#40;matched&#91;1&#93;, matched&#91;2&#93;, matched&#91;3&#93;&#41;&#41; &#123;
    if &#40;i == 0&#41; &#123;
    focusField = field;
    &#125;
    fields&#91;i++&#93; = oDate&#91;x&#93;&#91;1&#93;;
    bValid = false;
    &#125;
    &#125; else &#123;
    if &#40;i == 0&#41; &#123;
    focusField = field;
    &#125;
    fields&#91;i++&#93; = oDate&#91;x&#93;&#91;1&#93;;
    bValid = false;
    &#125;
    &#125; else if &#40;&#40;orderMonth > orderYear && orderMonth < orderDay&#41;&#41; &#123;
    var iDelim1 = orderYear + YEAR.length;
    var iDelim2 = orderMonth + MONTH.length;
    var delim1 = datePattern.substring&#40;iDelim1, iDelim1 + 1&#41;;
    var delim2 = datePattern.substring&#40;iDelim2, iDelim2 + 1&#41;;
    if &#40;iDelim1 == orderMonth && iDelim2 == orderDay&#41; &#123;
    dateRegexp = new RegExp&#40;"^&#40;\\d&#123;4&#125;&#41;&#40;\\d&#123;2&#125;&#41;&#40;\\d&#123;2&#125;&#41;$"&#41;;
    &#125; else if &#40;iDelim1 == orderMonth&#41; &#123;
    dateRegexp = new RegExp&#40;"^&#40;\\d&#123;4&#125;&#41;&#40;\\d&#123;2&#125;&#41;&#91;" + delim2 + "&#93;&#40;\\d&#123;2&#125;&#41;$"&#41;;
    &#125; else if &#40;iDelim2 == orderDay&#41; &#123;
    dateRegexp = new RegExp&#40;"^&#40;\\d&#123;4&#125;&#41;&#91;" + delim1 + "&#93;&#40;\\d&#123;2&#125;&#41;&#40;\\d&#123;2&#125;&#41;$"&#41;;
    &#125; else &#123;
    dateRegexp = new RegExp&#40;"^&#40;\\d&#123;4&#125;&#41;&#91;" + delim1 + "&#93;&#40;\\d&#123;2&#125;&#41;&#91;" + delim2 + "&#93;&#40;\\d&#123;2&#125;&#41;$"&#41;;
    &#125;
    var matched = dateRegexp.exec&#40;value&#41;;
    if&#40;matched != null&#41; &#123;
    if &#40;!isValidDate&#40;matched&#91;3&#93;, matched&#91;2&#93;, matched&#91;1&#93;&#41;&#41; &#123;
    if &#40;i == 0&#41; &#123;
    focusField = field;
    &#125;
    fields&#91;i++&#93; = oDate&#91;x&#93;&#91;1&#93;;
    bValid = false;
    &#125;
    &#125; else &#123;
    if &#40;i == 0&#41; &#123;
    focusField = field;
    &#125;
    fields&#91;i++&#93; = oDate&#91;x&#93;&#91;1&#93;;
    bValid = false;
    &#125;
    &#125; else &#123;
    if &#40;i == 0&#41; &#123;
    focusField = field;
    &#125;
    fields&#91;i++&#93; = oDate&#91;x&#93;&#91;1&#93;;
    bValid = false;
    &#125;
    &#125;
    &#125;
    if &#40;fields.length > 0&#41; &#123;
    focusField.focus&#40;&#41;;
    alert&#40;fields.join&#40;'\n'&#41;&#41;;
    &#125;
    return bValid;
    &#125;

    function isValidDate&#40;day, month, year&#41; &#123;
    if &#40;month < 1 || month > 12&#41; &#123;
    return false;
    &#125;
    if &#40;day < 1 || day > 31&#41; &#123;
    return false;
    &#125;
    if &#40;&#40;month == 4 || month == 6 || month == 9 || month == 11&#41; &&
    &#40;day == 31&#41;&#41; &#123;
    return false;
    &#125;
    if &#40;month == 2&#41; &#123;
    var leap = &#40;year % 4 == 0 &&
    &#40;year % 100 != 0 || year % 400 == 0&#41;&#41;;
    if &#40;day>29 || &#40;day == 29 && !leap&#41;&#41; &#123;
    return false;
    &#125;
    &#125;
    return true;
    &#125;


    //End -->
    </script>



    <form name="jobForm" method="post" action="/BAB-Admin/jobs/EditSubmit.do" onsubmit="alert&#40;'submit'&#41;;return validateJobForm&#40;this&#41; ">
    <input type="hidden" name="page" value="1">
    <table><!-- une ligne/colonne &#40;cellule&#41; par section -->

    <tr>
    <td><!-- instructions -->



    <p class="instructions">
    Les champs obligatoires sont marqués d'une étoile rouge
    </p>

    </td>
    </tr>
    <tr>
    <td>&nbsp;</td>

    </tr>
    <tr>
    <td><!-- généralités -->








    <script language="javascript">
    var quartiers = new Array
    &#40;

    "7", "Seujet", "1",

    "7", "Saint-Gervais", "2",

    "7", "Les Délices", "3",

    "7", "Les Grottes", "4",

    "7", "Les Cropettes", "5",

    "7", "Montbrillant", "6",

    "7", "Les Pâquis", "7",

    "7", "Saint-Jean", "8",

    "8", "Sécheron", "9",

    "8", "Le Grand-Pré", "10",

    "8", "Varembé", "11",

    "8", "De-Budé", "12",

    "8", "Le Bouchet", "13",

    "8", "Liotard", "14",

    "8", "La Servette", "15",

    "8", "Geisendorf", "16",

    "9", "Les Franchises", "17",

    "9", "Vieusseux", "18",

    "9", "Châtelaine", "19",

    "9", "Les Charmilles", "20",

    "9", "Cayla", "21",

    "10", "Rues - Basses", "22",

    "10", "Rive", "23",

    "10", "Les Bastions", "24",

    "10", "Plainpalais", "25",

    "11", "La Jonction", "26",

    "12", "Champel", "27",

    "12", "Florissant", "28",

    "12", "Contamines", "29",

    "13", "Les Eaux-Vives", "30",

    "14", "Malagnou", "31",

    "15", "Les Avanchets", "32",

    "16", "La Praille", "33",

    "16", "Le Bachet", "34",

    "16", "Les Palettes", "35",

    "16", "Les Semailles", "36",

    "17", "Saint-Georges", "37",

    "18", "Saint-Georges", "38",

    "19", "Libellules", "39",

    "19", "Le Lignon", "40",

    "19", "Bois-des-Frères", "41",

    "21", "Meyrin-village", "43",

    "22", "Aéroport", "44",

    "22", "Palexpo", "45",

    "24", "Balexert", "46",

    "33", "La Queue-d'Arve", "47",

    "34", "La Queue-d'Arve", "48",

    "34", "Les Vernets", "49",

    "32", "Les Vernets", "50",

    "44", "Peney", "51",

    "54", "Lullier", "52",

    "59", "Verbois", "53",

    "68", "Pregny", "54",

    "68", "Chambésy", "55",

    "", "", ""
    &#41;;
    </script>

    <table>
    <tr>
    <td align="left">
    Date de la demande<font class="required">*</font>

    </td>
    <td>

    <input type="hidden" id="DPC_TODAY_TEXT" value="aujourd'hui">
    <input type="hidden" id="DPC_BUTTON_TITLE" value="Afficher le calendrier...">
    <input type="hidden" id="DPC_MONTH_NAMES" value="&#91;'Janvier', 'F&eacute;vrier', 'Mars', 'Avril', 'Mai', 'Juin', 'Juillet', 'Ao&ucirc;t', 'Septembre', 'Octobre', 'Novembre', 'D&eacute;cembre'&#93;">
    <input type="hidden" id="DPC_DAY_NAMES" value="&#91;'Dim', 'Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam'&#93;">
    <input type="hidden" id="DPC_FIRST_WEEK_DAY" value="1">
    <input type="hidden" id="DPC_DEFAULT_FORMAT" value="DD/MM/YYYY">

    <input type="text" name="beginDate" size="10" value="03/05/2005" id="DPC_1">
    </td>
    </tr>

    <tr>
    <td align="left">
    Client<font class="required">*</font>
    </td>
    <td>
    <select name="jobClientId" onchange="javascript&#58;hideNonClientContacts&#40; this, 'abcContact', 'abcLineContact', contacts, 'lineContactDefault', true &#41;;" id="clientLB"><option value=""></option>
    <option value="1127" selected="selected">test_Voirie</option>

    <option value="1129">Peinture et Papier Peint S.A.</option>
    <option value="1131">Jean-claude Breton</option>
    <option value="1132">François Pignon</option>
    <option value="1134">Jean-claude Dus</option></select>
    <a href="/BAB-Admin/clients/New.do">Nouveau</a>
    </td>
    </tr>
    <tr>

    <td align="left" valign="top">
    Adresse du job<font class="required">*</font>
    </td>
    <td>

    <table id="jobAddressComplete" style="display&#58; none">
    <tr>
    <td align="left">
    Rue<font class="required">*</font>

    </td>
    <td>
    <input type="text" name="jobAddressStreet" value="">
    </td>
    </tr>
    <tr>
    <td align="left">

    </td>

    <td>
    <input type="text" name="jobAddressStreetNumber" value="">
    </td>
    </tr>
    <tr>
    <td align="left">
    Commune<font class="required">*</font>
    </td>

    <td>
    <select name="jobAddressCityId" onchange="javascript&#58;manageDependListbox&#40; this, 'jobAddressQuartierId', quartiers, '0', '' &#41;;"><option value=""></option>
    <option value="7">1201 Genève</option>
    <option value="8">1202 Genève</option>
    <option value="9">1203 Genève</option>
    <option value="10">1204 Genève</option>
    <option value="11">1205 Genève</option>
    <option value="12">1206 Genève</option>

    <option value="13">1207 Genève</option>
    <option value="14">1208 Genève</option>
    <option value="15">1209 Genève</option>
    <option value="16">1212 Grand-Lancy</option>
    <option value="17">1213 Onex</option>
    <option value="18">1213 Petit-Lancy</option>
    <option value="19">1214 Vernier</option>
    <option value="20">1216 Cointrin</option>
    <option value="21">1217 Meyrin</option>

    <option value="22">1218 Grand-Saconnex</option>
    <option value="23">1219 Aïre</option>
    <option value="24">1219 Châtelaine</option>
    <option value="25">1219 Le Lignon</option>
    <option value="26">1220 Les Avanchets</option>
    <option value="27">1222 Vésenaz</option>
    <option value="28">1223 Cologny</option>
    <option value="29">1224 Chêne-Bougeries</option>
    <option value="30">1225 Chêne-Bourg</option>

    <option value="31">1226 Thônex</option>
    <option value="32">1227 Carouge</option>
    <option value="33">1227 La Praille</option>
    <option value="34">1227 Les Acacias</option>
    <option value="35">1228 Plan-les-Ouates</option>
    <option value="36">1231 Conches</option>
    <option value="37">1232 Confignon</option>
    <option value="38">1233 Bernex</option>
    <option value="39">1234 Vessy</option>

    <option value="40">1236 Cartigny</option>
    <option value="41">1237 Avully</option>
    <option value="42">1239 Collex</option>
    <option value="43">1241 Puplinge</option>
    <option value="44">1242 Satigny</option>
    <option value="45">1243 Presinge</option>
    <option value="46">1244 Choulex</option>
    <option value="47">1245 Collonge-Bellerive</option>
    <option value="48">1246 Corsier</option>

    <option value="49">1247 Anières</option>
    <option value="50">1248 Hermance</option>
    <option value="51">1251 Gy</option>
    <option value="52">1252 Meinier</option>
    <option value="53">1253 Vandoeuvres</option>
    <option value="54">1254 Jussy</option>
    <option value="55">1255 Veyrier</option>
    <option value="56">1256 Troinex</option>
    <option value="57">1257 La Croix-de-Rozon</option>

    <option value="58">1258 Perly</option>
    <option value="59">1281 Russin</option>
    <option value="60">1283 La Plaine</option>
    <option value="61">1284 Chancy</option>
    <option value="62">1285 Athenaz</option>
    <option value="63">1286 Soral</option>
    <option value="64">1287 Laconnex</option>
    <option value="65">1288 Aire-la-Ville</option>
    <option value="66">1290 Chavannes-des-Bois</option>

    <option value="67">1290 Versoix</option>
    <option value="68">1292 Chambésy</option>
    <option value="69">1293 Bellevue</option>
    <option value="70">1294 Genthod</option>
    <option value="71">1298 Céligny</option></select>
    </td>
    </tr>
    <tr>
    <td>Quartier</td>

    <td>
    <select name="jobAddressQuartierId" id="jobAddressQuartierId"></select>
    </td>
    </tr>
    </table>

    <input type="checkbox" name="useClientAddress" value="on" checked="checked" onclick="javascript&#58;checkboxHideOrDisplay&#40;this, 'jobAddressComplete', true&#41;" id="useClientAddress"><label for="useClientAddress">Le job aura lieu à l'adresse du client</label>

    </td>
    </tr>

    </table>

    </td>
    </tr>
    <tr>
    <td>&nbsp;</td>
    </tr>
    <tr>
    <td><!-- contacts -->
    <h3>Contacts chez le client</h3>

    </td>
    </tr>
    <tr>
    <td>








    <script language="javascript">
    var contacts = new Array
    &#40;

    "1127", "Laurent Moutinot", "1128",

    "1129", "Jean Dupont", "1130",

    "1132", "Nadine Pignon", "1133",

    "1129", "test", "0000"
    &#41;;
    </script>

    <h4>Contacts existants</h4>

    <table id="contactsContainer">

    <tr>
    <td>




    <span id="abcLineContact1" style="display &#58; none">
    <input type="checkbox" name="jobContactsForClient" value="1128" id="abcContact1">
    <label for="abcContact1">
    Laurent Moutinot
    </label>
    <br>
    </span>



    <span id="abcLineContact2" style="display &#58; none">
    <input type="checkbox" name="jobContactsForClient" value="1130" id="abcContact2">
    <label for="abcContact2">
    Jean Dupont
    </label>
    <br>
    </span>


    <span id="abcLineContact3" style="display &#58; none">
    <input type="checkbox" name="jobContactsForClient" value="1133" id="abcContact3">

    <label for="abcContact3">
    Nadine Pignon
    </label>
    <br>
    </span>

    <span id="lineContactDefault">
    Ce client n'a pas encore de personne de contact
    </span>

    </td>
    </tr>

    </table>

    <h4>Nouveaux contacts</h4>
    <!-- NEW CONTACT 1 -->
    <table border="0" style="display&#58; none" id="organizationContactPerson1">
    <tr>
    <td align="left">
    Nom
    </td>
    <td>

    <input type="text" name="firstNewContactName" value="">
    </td>
    </tr>
    <tr>
    <td align="left">
    Prénom
    </td>
    <td>
    <input type="text" name="firstNewContactFirstName" value="">

    </td>
    </tr>
    <tr>
    <td align="left">
    Titre
    </td>
    <td>
    <select name="firstNewContactTitle"><option value="0">Autre...</option>
    <option value="Madame">Madame</option>

    <option value="Madame et Monsieur">Madame et Monsieur</option>
    <option value="Mademoiselle">Mademoiselle</option>
    <option value="Miss">Miss</option>
    <option value="Monsieur">Monsieur</option>
    <option value="Madame">Madame</option>
    <option value="Monsieur">Monsieur</option></select>
    <input type="text" name="firstNewContactOtherTitle" value="">
    </td>
    </tr>

    <tr>
    <td align="left">
    Téléphone
    </td>
    <td>
    <input type="text" name="firstNewContactPhone" value="">
    <input type="radio" name="firstNewContactPreferredWay" value="contact.type.phone">
    </td>
    </tr>

    <tr>
    <td align="left">
    Natel
    </td>
    <td>
    <input type="text" name="firstNewContactMobile" value="">
    <input type="radio" name="firstNewContactPreferredWay" value="contact.type.mobile">
    </td>
    </tr>

    <tr>
    <td align="left">
    Email
    </td>
    <td>
    <input type="text" name="firstNewContactEmail" value="">
    <input type="radio" name="firstNewContactPreferredWay" value="contact.type.email">
    </td>
    </tr>

    </table>
    <!-- NEW CONTACT 2 -->
    <table border="0" style="display&#58; none" id="organizationContactPerson2">
    <tr>
    <td>&nbsp;</td>
    <tr>
    <td align="left">
    Nom
    </td>

    <td>
    <input type="text" name="secondNewContactName" value="">
    </td>
    </tr>
    <tr>
    <td align="left">
    Prénom
    </td>
    <td>

    <input type="text" name="secondNewContactFirstName" value="">
    </td>
    </tr>
    <tr>
    <td align="left">
    Titre
    </td>
    <td>
    <select name="secondNewContactTitle"><option value="0">Autre...</option>

    <option value="Madame">Madame</option>
    <option value="Madame et Monsieur">Madame et Monsieur</option>
    <option value="Mademoiselle">Mademoiselle</option>
    <option value="Miss">Miss</option>
    <option value="Monsieur">Monsieur</option>
    <option value="Madame">Madame</option>
    <option value="Monsieur">Monsieur</option></select>
    <input type="text" name="secondNewContactOtherTitle" value="">

    </td>
    </tr>
    <tr>
    <td align="left">
    Téléphone
    </td>
    <td>
    <input type="text" name="secondNewContactPhone" value="">
    <input type="radio" name="secondNewContactPreferredWay" value="contact.type.phone">

    </td>
    </tr>
    <tr>
    <td align="left">
    Natel
    </td>
    <td>
    <input type="text" name="secondNewContactMobile" value="">
    <input type="radio" name="secondNewContactPreferredWay" value="contact.type.mobile">

    </td>
    </tr>
    <tr>
    <td align="left">
    Email
    </td>
    <td>
    <input type="text" name="secondNewContactEmail" value="">
    <input type="radio" name="secondNewContactPreferredWay" value="contact.type.email">

    </td>
    </tr>
    </table>
    <!-- NEW CONTACT 3 -->
    <table border="0" style="display&#58; none" id="organizationContactPerson3">
    <tr>
    <td>&nbsp;</td>
    <tr>
    <td align="left">

    Nom
    </td>
    <td>
    <input type="text" name="thirdNewContactName" value="">
    </td>
    </tr>
    <tr>
    <td align="left">
    Prénom
    </td>

    <td>
    <input type="text" name="thirdNewContactFirstName" value="">
    </td>
    </tr>
    <tr>
    <td align="left">
    Titre
    </td>
    <td>

    <select name="thirdNewContactTitle"><option value="0">Autre...</option>
    <option value="Madame">Madame</option>
    <option value="Madame et Monsieur">Madame et Monsieur</option>
    <option value="Mademoiselle">Mademoiselle</option>
    <option value="Miss">Miss</option>
    <option value="Monsieur">Monsieur</option>
    <option value="Madame">Madame</option>
    <option value="Monsieur">Monsieur</option></select>

    <input type="text" name="thirdNewContactOtherTitle" value="">
    </td>
    </tr>
    <tr>
    <td align="left">
    Téléphone
    </td>
    <td>
    <input type="text" name="thirdNewContactPhone" value="">

    <input type="radio" name="thirdNewContactPreferredWay" value="contact.type.phone">
    </td>
    </tr>
    <tr>
    <td align="left">
    Natel
    </td>
    <td>
    <input type="text" name="thirdNewContactMobile" value="">

    <input type="radio" name="thirdNewContactPreferredWay" value="contact.type.mobile">
    </td>
    </tr>
    <tr>
    <td align="left">
    Email
    </td>
    <td>
    <input type="text" name="thirdNewContactEmail" value="">

    <input type="radio" name="thirdNewContactPreferredWay" value="contact.type.email">
    </td>
    </tr>
    </table>
    <!-- NEW CONTACT 4 -->
    <table border="0" style="display&#58; none" id="organizationContactPerson4">
    <tr>
    <td>&nbsp;</td>
    </tr>

    <tr>
    <td align="left">
    Nom
    </td>
    <td>
    <input type="text" name="fourthNewContactName" value="">
    </td>
    </tr>
    <tr>

    <td align="left">
    Prénom
    </td>
    <td>
    <input type="text" name="fourthNewContactFirstName" value="">
    </td>
    </tr>
    <tr>
    <td align="left">

    Titre
    </td>
    <td>
    <select name="fourthNewContactTitle"><option value="0">Autre...</option>
    <option value="Madame">Madame</option>
    <option value="Madame et Monsieur">Madame et Monsieur</option>
    <option value="Mademoiselle">Mademoiselle</option>
    <option value="Miss">Miss</option>

    <option value="Monsieur">Monsieur</option>
    <option value="Madame">Madame</option>
    <option value="Monsieur">Monsieur</option></select>
    <input type="text" name="fourthNewContactOtherTitle" value="">
    </td>
    </tr>
    <tr>
    <td align="left">
    Téléphone
    </td>

    <td>
    <input type="text" name="fourthNewContactPhone" value="">
    <input type="radio" name="fourthNewContactPreferredWay" value="contact.type.phone">
    </td>
    </tr>
    <tr>
    <td align="left">
    Natel
    </td>

    <td>
    <input type="text" name="fourthNewContactMobile" value="">
    <input type="radio" name="fourthNewContactPreferredWay" value="contact.type.mobile">
    </td>
    </tr>
    <tr>
    <td align="left">
    Email
    </td>

    <td>
    <input type="text" name="fourthNewContactEmail" value="">
    <input type="radio" name="fourthNewContactPreferredWay" value="contact.type.email">
    </td>
    </tr>
    </table>

    <span id="addOrganizationContactPersonLink">
    <a href="javascript&#58;showNextHiddenElement&#40; 'organizationContactPerson', 'addOrganizationContactPersonLink' &#41;">ajouter une personne...</a>

    </span>

    </td>
    </tr>
    <tr>
    <td>&nbsp;</td>
    </tr>
    <tr>
    <td><!-- description -->





    <h3>Description</h3>

    <p>
    Intitulé du job<font class="required">*</font>
    <br>
    <input type="text" name="job.title" size="100" value="asdf">
    </p>
    <p>
    Descriptif du job
    <br>

    <textarea name="job.description" cols="75" rows="5"></textarea>
    </p>

    </td>
    </tr>
    <tr>
    <td>&nbsp;</td>
    </tr&

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [ZF 1.0] appeller une action quand on est dans le layout.phtml?
    Par keokaz dans le forum MVC
    Réponses: 3
    Dernier message: 12/09/2011, 13h54
  2. Appeller une action struts via dojo
    Par micmic31 dans le forum Struts 1
    Réponses: 1
    Dernier message: 09/02/2007, 08h59
  3. Appeler une action dans une action
    Par japz dans le forum Struts 1
    Réponses: 2
    Dernier message: 25/01/2007, 08h48
  4. [STRUTS][DOWNLOAD] download d'un fichier via une action
    Par FreshVic dans le forum Struts 1
    Réponses: 3
    Dernier message: 16/04/2004, 16h38
  5. [débutant]Faire appel à une action d'une ActionList
    Par petitours dans le forum C++Builder
    Réponses: 6
    Dernier message: 12/03/2004, 22h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo