2012-09-05 134 views
72

Debido a que se utiliza un complemento, no puedo agregar el atributo "onClick" a las entradas de formulario HTML como de costumbre. Un complemento está manejando los formularios en mi sitio y no ofrece la opción de hacerlo automáticamente.Agregar el evento onClick dinámicamente usando jQuery

Básicamente tengo esta entrada:

<input type="text" id="bfCaptchaEntry" name="bfCaptchaEntry" style=""> 

Quiero añadir un onClick a ella con jQuery proceso de carga para que sea así:

<input onClick="myfunction()" type="text" id="bfCaptchaEntry" name="bfCaptchaEntry" style=""> 

¿Cómo hago para hacer esto?

Sé que esto podría no ser una práctica estándar, pero parece ser la opción más fácil de hacer en mi situación.

Soy un novato en jQuery, por lo que cualquier ayuda es muy apreciada.

Respuesta

137

Usted puede utilizar el evento click y llame a su función o mover su lógica en el controlador:

$("#bfCaptchaEntry").click(function(){ myFunction(); }); 

Usted puede utilizar el evento click y establecer su función como el controlador:

$("#bfCaptchaEntry").click(myFunction); 

.click()

Enlace un controlador de eventos al evento de "clic" de JavaScript o active ese evento en un elemento.

http://api.jquery.com/click/


Usted puede utilizar el evento on obligado a "click" y llame a su función o mover su lógica en el controlador:

$("#bfCaptchaEntry").on("click", function(){ myFunction(); }); 

Usted puede utilizar el evento on con destino a "click" y configure su función como manejador:

$("#bfCaptchaEntry").on("click", myFunction); 

.en()

Adjuntar una función de controlador de eventos para uno o más eventos a los elementos seleccionados.

http://api.jquery.com/on/

+2

+1 por la variedad – nickaknudson

+0

simple y fácil de entender. Exactamente lo que quería. Otra pregunta: ¿cuál es la forma más fácil de integrar un cambio de color de fondo usando jQuery? o es mejor usar 'style.backgroundColor = "white";' en la sección de función? –

+2

'$ (" cuerpo "). Css (" color de fondo "," blanco ");' - http://api.jquery.com/css/#css2 – hunter

15

Try a continuación enfoque,

$('#bfCaptchaEntry').on('click', myfunction); 

o en caso de jQuery no es una necessaity absoluta a continuación, tratar a continuación,

document.getElementById('bfCaptchaEntry').onclick = myfunction; 

Sin embargo, el método anterior tiene algunos inconvenientes, ya que establece onclick como una propiedad en lugar de estar registrado como controlador ...

Leer más en este post https://stackoverflow.com/a/6348597/297641

7
$("#bfCaptchaEntry").click(function(){ 
    myFunction(); 
}); 
9

probar este método si conoce su nombre de cliente objeto (que no es lo importante que es botón o cuadro de texto)

$('#ButtonName').removeAttr('onclick'); 
$('#ButtonName').attr('onClick', 'FunctionName(this);'); 

tratar este pequeños si desea añadir Evento onClick a un objeto de servidor con JQuery

$('#' + '<%= ButtonName.ClientID %>').removeAttr('onclick'); 
$('#' + '<%= ButtonName.ClientID %>').attr('onClick', 'FunctionName(this);'); 
0

O puede utilizar una función de flecha para definirlo:

$(document).ready(() => { 
    $('#bfCaptchaEntry').click(()=>{ 

    }); 
}); 

Para un mejor soporte de los navegadores:

$(document).ready(function() { 
    $('#bfCaptchaEntry').click(()=>{ 

    }); 
}); 
+0

No veo cómo esto proporciona algo nuevo como el aceptado la respuesta ya sugirió el método '.click()'. El uso de funciones de flecha o funciones regulares es, en mi opinión, una discusión no relacionada con la pregunta formulada. Y para una mejor compatibilidad con el navegador, probablemente debería eliminar ambas funciones de flecha, no solo la primera. – agrm

+0

Porque es otra forma de usar jQuery –

Cuestiones relacionadas