6 votes

Zone de texte vide avec Jquery

Je suis capable de cacher le 'tr' lorsque l'on clique sur 'Remove'. avec le code suivant.

$("a#minus").bind("click", function(e){
    $(this).closest('tr').hide();
});

Mais je veux aussi effacer le contenu des 2 zones de texte (les identifiants des zones de texte sont dynamiques [frm_Expense_expensesVO_]). __strAmount et frm_Expense_expensesVO_. __memo] ici '*' va de 1 à l'infini). Merci de m'aider. Merci

<table>
<tr>
    <td>
        Amount
    </td>
    <td>
        Memo
    </td>
    <td>    
        &nbsp;
    </td>
</tr>
<tr>
    <td>
        <input type="text" name="expensesVO[0].strAmount" value="2.30" id="frm_Expense_expensesVO_0__strAmount"/>
    </td>
    <td>
        <input type="text" name="expensesVO[0].memo" value="Five" id="frm_Expense_expensesVO_0__memo"/>
    </td>
    <td>
        <a id="minus" href="#">Remove</a>
    </td>
</tr>
<tr>
    <td>
        <input type="text" name="expensesVO[1].strAmount" value="3.45" id="frm_Expense_expensesVO_1__strAmount"/>
    </td>
    <td>
        <input type="text" name="expensesVO[1].memo" value="Six" id="frm_Expense_expensesVO_1__memo"/>
    </td>
    <td>
        <a id="minus" href="#">Remove</a>
    </td>
</tr>
<tr>
    <td>
        <input type="text" name="expensesVO[2].strAmount" value="" id="frm_Expense_expensesVO_2__strAmount"/>
    </td>
    <td>
        <input type="text" name="expensesVO[2].memo" value="" id="frm_Expense_expensesVO_2__memo"/>
    </td>
    <td>
        <input type="submit" id="frm_Expense_ExpenseAdd_plus" name="action:ExpenseAdd_plus" value="+"/>
    </td>
</tr>
<tr>
    <td>    
        <label id="frm_Expense_transactionVO_amount">5.75</label>
    </td>
    <td align="right">
        <input type="submit" id="frm_Expense_Cancel" name="action:ExpenseAdd_cancel" value="Cancel"/>
    </td>
    <td align="left">
        <input type="submit" id="frm_Expense_Save" name="action:ExpenseAdd_save" value="Save"/>
    </td>
</tr>

17voto

Chetan Sastry Points 14742
$("a#minus").bind("click", function(e){
    $(this).closest('tr').hide().find('input:text').val('');
});

Note : Voir aussi Réponse de darmen sur la raison pour laquelle le sélecteur a#minus ne fonctionnera pas comme souhaité.

7voto

Darmen Points 2788

Vous devez spécifier une classe aux ancres. La liaison sur un seul identifiant déclenchera un événement pour le dernier identifiant.

Exemple :

$("a.remove").live('click', function(){
   $(this).closest('tr').hide().find("input").val("");
});

0voto

geowa4 Points 17712

Utilisez le class et sélectionnez les deux zones de texte à l'aide de cet attribut. className . Ensuite, vous pouvez définir la valeur de cette collection à la chaîne nulle.

0voto

Anurag Points 66470

Le plus proche est-il défini dans le noyau de jQuery ou dans un plugin ?

Quoi qu'il en soit, vous pourriez obtenir toutes les zones de texte dans ce tr et ensuite faire une correspondance regex. Cela ne devrait vider que les zones de texte qui correspondent aux identifiants mentionnés dans votre question.

$("a#minus").bind("click", function(e){
    var row = $(this).closest('tr');
    $("input:text", row).each(function(item) {
        var id = item.id;
        if(/frm_Expense_expensesVO_[0-9]+__strAmount/.test(id)) {
            $(item).val('');
        }
        else if(/frm_Expense_expensesVO_[0-9]+__memo/.test(id)) {
            $(item).val('');
        }
    });
    row.hide();
});

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X