如何在jquery中使用span id调用方法

时间:2011-11-07 20:51:13

标签: javascript jquery jquery-ui javascript-events

我的功能如下

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>

我使用(this)调用了Blur,但是如果我想通过带有span id的Mask(this.id)调用它,我该如何更改我的方法代码?

2 个答案:

答案 0 :(得分:4)

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

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

JQuery采用CSS选择器值,因此任何ID都需要表示为#idValue <div id='MyId'>将在jQuery中调用为$("#MyId")

因此,如果您计划将Mask(this.id)传递给function Mask (senderID),则需要致电$("#" + senderID)

你可以像这样从HTML中调用它,但是不建议使用内联Javascript。 查看Code Seperation。

<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 :(得分:1)

尝试以下操作(并检查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()内部调用它。