2011-12-01 2 views
0

저는 C# .NET MVC3 웹 응용 프로그램을 가지고 있으며 내 페이지에서 일반적인 jQuery 기능을 가지고 있으며 모듈화하려고합니다. 나는 이것을 어떻게하는지 모른다. 아래는 내가 사용하고있는 코드의 예입니다. 여러 컨트롤에 이벤트에 할당 된 기능이 있음을 알 수 있습니다. 내가 가지고있는 각각의 뷰는 이것을 할 것이지만, 컨트롤 (그리고 컨트롤의 수)은 다를 것이다. 이벤트를 추가해야하거나 10 일 수있는 컨트롤이 1 개있을 수 있습니다.jQuery 일반적인 코드 ... MVC3 App

$(document).ready(function() { 
    $("#Description").keyup(function() { 
     disableEnableSave(); 
    }); 
    $("#DueDate").change(function() { 
     disableEnableSave(); 
    }); 
    $("#EndDate").keyup(function() { 
     disableEnableSave(); 
    }); 
}); 

아래에는 disableEnableSave() 코드가 있습니다. 유사 문제, 그 코드 내부에 존재 한 컨트롤에 반대하거나 10

function disableEnableSave() { 
     var text = $("#Description").val(); 
     var text1 = $("#DueDate").val(); 
     var text2 = $("#EndDate").val(); 
     var textlength = text.length; 
     var textlength1 = text1.length; 
     var textlength2 = text2.length; 
     if (textlength > 0 && textlength1 > 0 && textlength2 > 0) { 
      $("#thePageSubmit").removeAttr("disabled"); 
     } 
     else { 
      $("#thePageSubmit").attr("disabled", "disabled"); 
     } 
     document.title = document.title.replace("*", ""); 
     document.title = document.title + "*"; 
     return true; 
    } 

는 내가 jQuery를 또는 자바 스크립트 전문가가 아니라고하지만 난은 .js 파일이 캡슐화에 통과 할 수있는 방법이 있다고 생각 해 수 일부 매개 변수. 어떤 아이디어?

답변

1

라이브 데모 : http://jsfiddle.net/g3azJ/3/

$.fn.disableFalseInput = function(list) { 
    var _this = $(this), 
     required = $(list); 

    required .bind("keyup change", function() { 
     var available = true; 
     $.each(required , function(k, v) { 
      if (v.value.length == 0) { 
       available = false; 
       return false; 
      } 
     }); 
     if (available) { 
      _this.removeAttr("disabled") 
     } else { 
      _this.attr("disabled", "disabled"); 
     } 
    }).first().trigger("keyup"); 
} 

필요에 따라 몇 가지 입력을 필요로하는 버튼을 정의합니다

$("#thePageSubmit").disableFalseInput("#Description, #DueDate, #text2"); 

#thePageSubmit 사용할 수 없습니다 제출 버튼, 그리고 매개 변수는 필수 필드입니다. 이 버튼은 각 버튼이나 무엇이든지간에 사용할 수 있습니다.

+0

@Niels ... 멋지다 !! 진짜 좋은 .... 나는 그것을 찢어 버릴거야. 모든 페이지에서 사용할 수 있도록 별도의 .js 파일에 disableFalseInput() 함수를 넣을 수 있습니다 ... 예? – MikeTWebb

+0

네, 할 수 있어요! 문서 준비가 끝난 후에'.disableFalseInput()'을 사용한다면. 나는 문제가되지 않을 것이다. – Niels