如何将自定义条件验证代码添加到jQuery事件处理程序中?

时间:2015-06-03 18:09:05

标签: jquery validation sharepoint-2010 onchange ascx

我在ascx文件(Sharepoint WebPart)中有一些jQuery响应复选框的更改事件,根据复选框的状态操作另一个控件/元素的属性(选中或取消选中,这就是问题):

$(document).on("change", '[id$=ckbxEmp]', function () {       
    var ckd = this.checked;
    var $input = $('[id$=txtbxSSNOrITIN]');
    if(ckd) $input.data("oldValue", $input.val()); // Remember current value    
    $input.prop("maxlength", ckd? 4 : 12).css({
        background: ckd? 'yellow' : "lightgreen",
        width: ckd? 40 : 80
    }).val(function(i, v){
        // If checked, slice value to four chars:
        return ckd && v.length>4 ? v.slice(0,4) : $input.data("oldValue");
    });    
}); 

上面的脚本可以从this fiddle运行,这是基于我得到的答案here

我需要添加的是自定义验证代码。如果处于Employee(SSN)模式(选中复选框),我想我只需要验证输入0..9子集中的四个字符;如果ITIN,(复选框未选中),我需要一个更复杂的验证。我该如何融入呢?我是否需要编写验证函数并从" val"功能?我应该这一行:

return ckd && v.length>4 ? v.slice(0,4) : $input.data("oldValue");

......改为:

return ckd && v.length>4 ? getSSN($input.data) : getITIN($input.data);

...然后编写如下函数:

function getSSN(var entry) {
    // validate/verify, slice to 4 chars if necessary
}

function getITIN(var entry) {
    // validate/verify, slice to 12 if necessary
}

......还是什么?

更新

来想一想,我需要为文本框创建一个事件处理程序,这似乎是合乎逻辑的(事实上,非常明显),类似于(伪文本):

$(document).on("change", '[id$=txtbxSSNOrITIN]', function () {       
    var $input = $('[id$=txtbxSSNOrITIN]');
    var ckbxChecked = "#ckbxEmp".checked;
    if (ckbxChecked) {
        // validate for SSN, passing $input
    }
    else {
        // validate for ITIN, passing $input
    }
});

但是"我如何从这里到达那里"问题是......

0 个答案:

没有答案