2012-10-25 15 views
0

在MVC 3應用程序上工作。我完成了我的自定義服務器端代碼,現在在客戶端工作。我想把它與現有的不顯眼的,所以我使用addMethod。這個僞類似於「如果radioValue爲true,那麼counterValue必須大於零。」問題是,當我嘗試獲取radioValue時,我的函數在第三行停止運行。它會拋出一個通用的異常「檢查你的方法」。請指教。哦,這是我第一次這樣做,所以如果你看到任何東西,請讓我知道。謝謝!不顯眼的驗證 - 如何找到用於比較的依賴屬性

$.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"); 
+0

爲什麼你要創建新的變量來分配已經存在的變量? – elclanrs

回答

1

getElementByName會給你列出元素節點..

所以,當你試圖在名單上直接訪問該值,將拋出一個錯誤..集合內的元素將有一個價值不在列表作爲一個整體......

如果確定只有一個叫這個名字..嘗試這個

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

如果有與相同的多個元素名..你會需要遍歷them./

而且你不必要分配兩個變量時,您可以直接賦值函數的參數..

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");