Domanda

Ho una forma semplice. Ha un campo e un pulsante di invio. Nascondo il pulsante di invio. Il pulsante di invio viene effettivamente attivato con un'ancora tag che chiama un metodo javascript che utilizza jQuery per ottenere l'elemento ed eseguirlo un clic (). Funziona bene, i post e il modulo vengono scritti correttamente nel DB.

Quindi ora ho aggiunto xVal per la convalida. Sto cercando di aggiungere la semplice convalida lato client.

Non funziona quando faccio clic sul tag di ancoraggio. Tuttavia, se nascondo il pulsante di invio e provo a pubblicare il modulo con quello invece di utilizzare il tag anchor che chiama il metodo js, ??funziona. Quindi sostanzialmente sto cercando di capire perché non funziona quando uso il metodo js per attivare il clic del pulsante di invio.

Qualche grande idea? Grazie mille!

Ecco un po 'di codice ...

<div id="manufacturerButtons" class="moduleRow">
            <%= Html.ActionImage(Url.Content("~/Content/Icons/bullet_go_back.png"), "Back To Admin", "Admin", "Admin")%>
            | <a class="actionImage" href="javascript: addManufacturer();">
                <img border="0" src="<%= Url.Content("~/Content/Icons/accept.png")%>">&nbsp;<span>Add
                    Manufacturer </span></a>
        </div>
        <div class="moduleContent">
            <div id="manufacturerContainer">
                <div class="moduleRow">
                    <h3>
                        New Manufacturer</h3>
                </div>
                <div class="moduleRow">
                    <% Html.BeginForm("NewManufacturer", "Admin", FormMethod.Post); %>
                    <table class="noBorder" border="0" cellpadding="0" cellspacing="0">
                        <tr>
                            <td style="width: 125px">
                               <h6>Name:</h6>
                            </td>
                            <td>
                                <%= Html.TextBox("Name") %>
                            </td>
                        </tr>
                        <tr style="display: none;">
                            <td>
                                &nbsp;
                            </td>
                            <td>
                                <input type="submit" id="btnAdd" name="btnAdd" />
                            </td>
                        </tr>
                    </table>
                    <% Html.EndForm(); %>
                    <%= Html.ClientSideValidation<EquipmentManufacturer>() %>
                </div>

            </div>

Javascript:

function addManufacturer() {
    //$('form').submit(); // doesnt work when trying to validate either
    $('#btnAdd').click();
    return true;
}
È stato utile?

Soluzione

Quello che devi fare è attivare la convalida jQuery sul tuo modulo. Prova:

$('form').validate();

Per inviare il modulo dopo la convalida, provare:

$('form').validate({ submitHandler: function(form) { form.submit(); } });

Nota che 'form' dovrebbe essere un selettore jQuery valido per il tuo modulo ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top