Как определить функции в JQuery? - PullRequest
2 голосов
/ 18 декабря 2009

У меня есть приведенный ниже код, который прекрасно работает в моей функции ready в jquery, когда я заполняю форму и переключаю фокус с элемента ввода на другой, запускаю проверку ajax и назначаю классу css элемент, показывая, проверен ли он или нет. все ок.

id 'хотел бы определить с помощью этого кода функцию, чтобы я мог вызывать ее также, когда страница только что загружена, поэтому проверка будет выполняться также, если форма заполнена на стороне сервера, и на размытие, но я столкнулся с проблемами определение функций в jquery.

это код, который работает на размытие

$('#join_username').blur(function(){
    $('#join_username').addClass(\"join_form_input_checking\");
    $('#join_username').removeClass(\"join_form_input\");      
    $('#join_username').removeClass(\"join_form_input_error\");      
    $('#join_username').removeClass(\"join_form_input_verified\");      


    $.post(\"inc/viewlets/join_form/check_username.php\", {
            join_username: $('#join_username').val()
            }, 
            function(response){
                    setTimeout(\"finishAjaxUsername('usernameResult', '\"+escape(response)+\"')\", 400);
        if(escape(response)=='true') joinFormCheck[0]=true;      
        else joinFormCheck[0]=false;

        checkFormArray(joinFormCheck);          
            }
          );              

    return false;
});

Ответы [ 4 ]

15 голосов
/ 18 декабря 2009

или вы можете использовать обычный синтаксис функции

function do_on_blur(){
   // your base. I'm in it
}

и

$("#join_username").blur( do_on_blur );
15 голосов
/ 18 декабря 2009

Просто определите функцию вместо передачи blur() анонимной функции:

$.myFunctionName = function()
{
   // your code here
}

$("#join_username").blur($.myFunctionName);

Если вы хотите, чтобы функция вызывалась в ответ на событие (например, document.ready), просто вызывайте ее, как если бы вы работали с обычной функцией.

$(document).ready(function()
{
    // -- define your function
    $.myFunctionName = function()
    {
       //your code here
    }

    // -- add a callback to blur on an input
    $("#join_username").blur($.myFunctionName);

    // -- manually call the function once
    $.myFunctionName(); 
});
0 голосов
/ 18 декабря 2009

Если вы не хотите создавать плагин jQuery, то достаточно передать этой функции jQuery ссылку на функцию, которую вы хотите использовать. Анонимные функции используются, когда вам нужна эта функция только один раз.

function blur() {};

$('#join_username').blur(blur);

Это обычно делается, когда функция используется более одного раза; обычно вы будете использовать анонимную функцию.

0 голосов
/ 18 декабря 2009

Я думаю, что у вас просто неверный синтаксис здесь:

$('#join_username').blur( function(){
    $(this)
      .addClass("join_form_input_checking")
      .removeClass("join_form_input");      
      .removeClass("join_form_input_error");      
      .removeClass("join_form_input_verified");      


    $.post("inc/viewlets/join_form/check_username.php", {
      join_username: $(this).val()
    }, function(response) {
      setTimeout( function() {
        finishAjaxUsername('usernameResult', escape(response))
      }, 400);
      if(escape(response)=='true') { joinFormCheck[0]=true; }
      else { joinFormCheck[0]=false; }
      checkFormArray(joinFormCheck);          
    } );                  

    return false;
} );

Попробуй это. Затем, конечно, если вы хотите, чтобы функция была отделена от события размытия, вы можете просто присвоить ее переменной ... так что в итоге вы получите:

var blurFunc = function() { ...function from above... };
$('#join_username').blur( blurFunc );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...