JQuery общий код ... Приложение MVC3 - PullRequest
0 голосов
/ 01 декабря 2011

У меня есть веб-приложение на C # .NET MVC3, и у меня есть несколько общих функций jQuery на моих страницах, и я хочу его модульное. Я не знаю, как это сделать. Ниже приведен пример кода, который я использую. Вы заметите, что некоторые элементы управления имеют функции, назначенные событиям. Каждый вид, который у меня есть, будет делать это, НО элементы управления (и количество элементов управления) будут отличаться. Может быть один элемент управления, которому нужно добавить событие, или их может быть 10.

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

Ниже приведен код disableEnableSave (). Аналогичная проблема, внутри этого кода, может работать 1 элемент управления или 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 или JavaScript, но я должен подумать, что есть способ инкапсулировать это в файл .js и передать некоторые параметры. Есть идеи?

1 Ответ

1 голос
/ 02 декабря 2011

Демонстрация в реальном времени: 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 - кнопка отправки, которая будет отключенапараметр - обязательные поляЭто можно использовать на каждой кнопке или на том, что вы получили.

...