2013-08-05 4 views
0

Utilisation de JS pour cloner une ligne de table. Les éléments de formulaire sont ajoutés avec un nombre car ils sont dupliqués. Je travaille bien.Clonage d'une ligne de table avec une exception de classe

Mon problème est que je veux effacer les valeurs de la plupart des champs mais ceux avec une certaine classe I ne peuvent pas avoir la valeur effacée.

html

<div class="add_rec_container" id="fuel_stop" style="display:none;"><!--open #fuel_stop--> 
    <p class="label">Enter Fuel Stop:</p> 
    <table width="100%" border="0" cellspacing="0" cellpadding="0" id="fuel_stop_table" class="fuel_data"> 
     <tbody> 
     <tr> 
      <td><select name="data_fuel_state1" id="data_fuel_state1" class="state_menu"> 
      <option value="AZ">AZ</option> 
      <option value="CA" selected="selected">CA</option> 
      <option value="NM">NM</option> 
      <option value="NV">NV</option> 
      <option value="OR">OR</option> 
      <option value="UT">UT</option> 
      </select> 
      </td> 
      <td><input type="tel" name="data_total_gal1" id="data_total_gal1" class="total_gal_field" title="Gallons" placeholder="Gallons"/></td> 
      <td><input type="checkbox" name="data_yard1" id="data_yard1" class="yard_check" value="y" onclick="disablePPG(this);"/> Yard 
      </td> 
      <td>$ <input type="tel" name="data_price1" id="data_price1" class="price_field" title="PPG" placeholder="PPG" /></td> 
      </tr> 
     </tbody> 
    </table> 
    <a id="add_fuel_row" class="add_btn">+ State</a> 
    </div><!--close #fuel_stop--> 

    <input type="submit" name="Submit" class="send_button" value="Send"/> 
</form>​ 
</div><!--close .record_entry_container--> 

js

<!-- Inset Table Row --Fuel --> 
$(document).ready(function($) 
{ 
    // trigger event when button is clicked 
    $("a#add_fuel_row").click(function() 
    { 
    // add new row to table using addTableRow function 
    addTableRow($("table#fuel_stop_table")); 

    // prevent redirecting 
    return false; 
    }); 

    // function to add a new row to a table by cloning the last row 
    function addTableRow(table) 
    { 
    // clone the last row in the table 
    var $tr = $(table).find("tbody tr:last").clone(); 

    // get the name attribute for input and select fields 
    $tr.find("select, input").val('').attr("name", function() 
    { 
     // break the field name and it's number into two parts 
     var parts = this.id.match(/(\D+)(\d+)$/); 

     // create a unique name (+1 scheme for now) 
     return parts[1] + ++parts[2]; 
    // repeat for id attributes 
    }).attr("id", function() 
    { 
     var parts = this.id.match(/(\D+)(\d+)$/); 
     return parts[1] + ++parts[2]; 
    }); 

    // append the new row to the table 
    $(table).find("tbody tr:last").after($tr); 
    }; 
}); 

Si l'entrée a une classe de "yard_check", alors je ne veux pas effacer la valeur. c'est-à-dire que la case à cocher doit rester comme valeur = y.

Merci.

Répondre

0

Pour les entrées/textareas, utilisez simplement .val ('') pour effacer les valeurs d'un élément donné dans un sélecteur.

$('selectorhere').val(''); 

Pour les options, utilisez

$('select:first').attr('selected','selected'); 

Pour les cases à cocher, faire la même chose, sauf supprimer la propriété vérifiée à l'aide .removeProp

+0

Je suis en mesure de le faire maintenant. Où je suis coincé est de savoir comment le faire pour plusieurs éléments de formulaire avec des conditions différentes pour la valeur. – macericpet

+0

Par exemple. Le menu de sélection et les champs de texte effacent la valeur mais la case à cocher conserve la valeur. – macericpet

+0

Vous voulez que la case à cocher conserve une valeur, vous ne voulez pas que la propriété checked soit présente, n'est-ce pas? – shubniggurath

Questions connexes