Pregunta

Estoy trabajando en una aplicación web ASP.net.

Tengo un formulario con un botón de envío. El código para el presente miradas botón <input type='submit' value='submit request' onclick='btnClick();'>.

Quiero escribir algo como lo siguiente:

function btnClick() {
    if (!validData())
        cancelFormSubmission();
}

¿Cómo se hace esto?

¿Fue útil?

Solución

Usted es mejor hacer ...

<form onsubmit="return isValidForm()" />

Si se vuelve a isValidForm() false, a continuación, su forma no presentara.

También debe probablemente mueva el controlador de eventos en línea.

document.getElementById('my-form').onsubmit = function() {
    return isValidForm();
};

Otros consejos

Cambiar su entrada a este:

<input type='submit' value='submit request' onclick='return btnClick();'>

Y falsa de retorno en su función

function btnClick() {
    if (!validData())
        return false;
}

Es necesario cambiar

onclick='btnClick();'

a

onclick='return btnClick();'

y

cancelFormSubmission();

a

return false;

Una vez dicho esto, que iba a tratar de evitar los atributos de eventos intrínsecos a favor de la discreta JS con una biblioteca (como YUI o jQuery) que tiene un evento de buen manejo de activos y de lazo en el caso de que realmente importa (es decir, los formularios de presentar evento en lugar de evento de clic del botón).

A veces onsubmit no funcionaría con asp.net.

Lo resuelto con forma muy fácil.

si tenemos una forma tal

<form method="post" name="setting-form" >
   <input type="text" id="UserName" name="UserName" value="" 
      placeholder="user name" >
   <input type="password" id="Password" name="password" value="" placeholder="password" >
   <div id="remember" class="checkbox">
    <label>remember me</label>
    <asp:CheckBox ID="RememberMe" runat="server" />
   </div>
   <input type="submit" value="login" id="login-btn"/>
</form>

Ahora puede coger conseguir ese caso, antes de la forma de devolución de datos y evitar que la devolución de datos y hacer todo el Ajax que desee mediante este jQuery.

$(document).ready(function () {
            $("#login-btn").click(function (event) {
                event.preventDefault();
                alert("do what ever you want");
            });
 });

se debe cambiar el tipo de submit a button:

<input type='button' value='submit request'>

en lugar de

<input type='submit' value='submit request'>

A continuación, obtener el nombre de su botón en javascript y asociar cualquier acción que desea que

var btn = document.forms["frm_name"].elements["btn_name"];
btn.onclick = function(){...};

funcionado para mí espero que ayude.

Es necesario return false;:

<input type='submit' value='submit request' onclick='return btnClick();' />

function btnClick() {
    return validData();
}

¿Por qué no cambia el botón de enviar a un botón regular, y en el evento de clic, enviar su formulario si pasa sus pruebas de validación?

por ejemplo

<input type='button' value='submit request' onclick='btnClick();'>

function btnClick() { 
    if (validData()) 
        document.myform.submit();
} 

Es muy sencillo, simplemente return false;

El código va a continuación dentro del onclick de la presente usando jQuery botón ..

if(conditionsNotmet)
{
return false;
}

uso onclick='return btnClick();'

y

function btnClick() {
    return validData();
}
function btnClick() {
    return validData();
}

Es necesario onSubmit. No onClick otra manera alguien puede entrar simplemente pulse y pasará por alto su validación. En cuanto a la cancelación. necesita devolver falsa. Aquí está el código:

<form onSubmit="return btnClick()">
<input type='submit' value='submit request'>

function btnClick() {
    if (!validData()) return false;
}

Editar onSubmit pertenece en la etiqueta de formulario.

<input type='button' onclick='buttonClick()' />

<script>
function buttonClick(){
    //Validate Here
    document.getElementsByTagName('form')[0].submit();
}
</script>
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top