evento disparar javascript onclick

javascript - disparar - El botón debe hacerse clic dos veces para activar la función



on click jquery (3)

Mueva su bandera fuera de la función niju.

var flag=1; function niju() { }

Sé que esto sería difícil de entender, pero por favor, inténtalo. Eche un vistazo a la captura de pantalla.

El pequeño nombre del cuadro de entrada es murl .

add() se usa para enviar el formulario. si murl está vacío, el formulario debe enviarse directamente; si no está vacío, la entrada del murl debe verificarse contra la base de datos, si existe. si no existe se llama add() .

El problema es que se debe hacer clic dos veces en el botón para activar la función.

El código en el botón es:

<button type="button" value="My button value" onclick="javascript: niju();" name="microsubmit" id="microsubmit">button</button>

el JavaScript que llama ese botón es:

function niju() { var flag=1; var micro=document.getElementById(''murl'').value; $(''#microsubmit'').click(function() { if(micro=="") { add(); } else { //remove all the class add the messagebox classes and start fading $("#msgbox") .removeClass() .addClass(''messagebox'') .text(''Checking...'') .fadeIn("slow"); //check the username exists or not from ajax $.post("<?php echo SITE_ROOT;?>inc/user_availability.php", { murl: $("input:murl").val() }, function(data) { if(data==''no'') //if username not avaiable { $("#msgbox").fadeTo(200,0.1,function() //start fading the messagebox { //add message and change the class of the box and start fading $(this) .html(''This User name Already exists'') .addClass(''messageboxerror'') .fadeTo(900,1); flag=0; }); } else { $("#msgbox") //start fading the messagebox .fadeTo(200,0.1,function() { //add message and change the class of the box and start fading $(this) .html(''Username available to register'') .addClass(''messageboxok'') .fadeTo(900,1); flag=1; add(); }); } }); } }); if(micro=="" && flag==1) { add(); } }

Captura de pantalla:

captura de pantalla http://img294.imageshack.us/img294/2172/screenhunter001am9.th.jpg


Tiene que hacer clic dos veces porque está definiendo el evento click #microsubmit dentro de la función. Por lo tanto, la primera vez que hace clic, vincula el controlador de eventos y la segunda vez que el controlador de eventos está en su lugar y es despedido. No he analizado la lógica detrás de lo que intentas lograr, pero creo que si mueves la carpeta de eventos fuera de la función y te aseguras de que todas tus variables estén en los ámbitos correctos, entonces funcionará.


La primera vez que carga la página, el manejador de clics no está enganchado al botón, es solo hasta que hace clic en el botón la primera vez que llama al niju () y engancha el evento click. Tienes que hacer algo como

$(document).ready() { niju(); }

y eliminar el onclick de la declaración del botón