0

在 MVC 3 应用程序上工作。我已经完成了我的自定义服务器端代码,现在在客户端工作。我想将它与现有的不显眼的东西联系起来,所以我使用了 addMethod。伪代码类似于“如果 radioValue 为真,则 counterValue 必须大于零。” 问题是,当我尝试获取 radioValue 时,我的函数在第 3 行停止运行。它抛出一个通用异常“检查你的方法”。请指教。哦,这是我第一次这样做,所以如果你看到任何东西,请告诉我。谢谢!

$.validator.addMethod("requiredifyes", function (val, elem, param) {
var dependantProperty = param;
var radioValue = document.getElementByName(dependantProperty).value;
var counterValue = val;

if (radioValue == true) {
    if (counterValue == 0) {
        return false;
    }
}
    return true;
});

$.validator.unobtrusive.adapters.addSingleVal("requiredifyes", "othervalue", "requiredifyes");
4

2 回答 2

1

getElementByName会给你元素节点列表..

因此,当您尝试直接访问列表上的值时,会抛出错误。集合内的元素将具有一个值而不是整个列表...

如果你确定只有那个名字的..试试这个

var radioValue = document.getElementByName(dependantProperty)[0].value;

如果有多个具有相同名称的元素..您需要遍历它们。/

当您可以直接分配函数参数时,您也不必要地分配了两个变量。

于 2012-10-25T23:08:17.583 回答
0

谢谢大家的帮助。我已经取出了所有不需要的变量,并根据 Sushanth 关于返回数组的代码的评论,我通过研究 JQuery 论坛来寻找 JQuery 解决方案。这是最终的工作代码:

    $.validator.addMethod("requiredifyes", function (val, elem, param) {
       var radioValue = $('input:radio[name="' + param + '"]:checked').val();

    if (radioValue == "True") {
        if (val == 0) {
            return false;
        }
    }
    return true;
});

$.validator.unobtrusive.adapters.addSingleVal("requiredifyes", "othervalue", "requiredifyes");
于 2012-10-26T14:46:20.087 回答