Как вызвать метод с использованием идентификатора span в jquery - PullRequest
2 голосов
/ 08 ноября 2011

У меня есть функция следующим образом

Mask (sender) { 
var error= false;
        var regex = '^[0-9]+,[0-9][0-9]$'; 

          if(!($(sender).val().match(regex))) {   
              error = true;
        }   
}

HTML

<input name="mf1234" value="" id="mf1234" onblur="Mask(this)"/>
<span class="comment" id="mf1234" class="sssnnn"></span>

Я звоню onBlur используя (this), но если я хочу вызвать его по Mask (this.id)с идентификатором диапазона, как я могу изменить свой код метода?

Ответы [ 2 ]

4 голосов
/ 08 ноября 2011
function Mask (senderID) {
   var error= false;
    var regex = '^[0-9]+,[0-9][0-9]$'; 

    if(!($("#" + senderID).val().match(regex))) {   
        error = true;
    } 
}

JQuery принимает значения селектора CSS, поэтому любой идентификатор должен быть представлен как #idValue <div id='MyId'> будет вызываться в jQuery как $("#MyId")

Так что, если вы планируете передать Mask(this.id) на function Mask (senderID), вам нужно позвонить $("#" + senderID)

Вы можете вызывать это из HTML примерно так, однако встроенный Javascript не рекомендуется. Изучите разделение кода.

<input name="mf1234" value="" id="mf1234" onblur="Mask(this.id)"/>
<span class="comment" id="mf1234_comment" class="sssnnn"></span>

Вот решение лучше ...

$(document).ready(function() {
    $("#mf1234").bind("blur", function() {
        var error = false;
        var regex = '^[0-9]+,[0-9][0-9]$';
        if (!($(this).val().match(regex))) {
            error = true;
        }
        console.log(error);
    });
});

прикреплять ваши события в javascript .. это позволяет избежать встроенного javascript и способствует разделению кода. Это поможет вам в обслуживании и удобстве чтения

ооо, и тогда ваш HTML будет выглядеть так

<input name="mf1234" value="" id="mf1234" />
<span class="comment" id="mf1234_comment" class="sssnnn"></span>

http://jsfiddle.net/rlemon/NCwF3/

1 голос
/ 08 ноября 2011

Попробуйте следующее (и отметьте this jsfiddle ):

$('input[name="mf1234"]').blur(function(){
    var error= false;
    var regex = RegExp('^[0-9]+,[0-9][0-9]$'); 

    if(!($(this).val().match(regex))) {   
        error = true;
        alert('error');
    } else {
        alert('no error');
    }
});

Он не использует встроенный JavaScript, но если вы настаиваете на использовании предопределенной функции (Mask()), вы можете просто вызвать ее из .blur().

...