prodipjsr Ответов: 2

jquery для включения / выключения текстового поля в операторе if


Кто-нибудь, пожалуйста, предоставьте мне код для Jquery..


  • если tbfirstper= = 100, то tbsecondnominee, tbsecondper,tbthitdnominee, tbthirdper не включен.
  • Если tbfirstper < 100; то tbsecondnominee, tbsecondper включен,
  • если tbfirstper+tbsecondper< 100, то tbthitdnominee, tbthirdper включен,

Я новичок в jquery поэтому пожалуйста помогите мне как написать код
<script type="text/javascript">
    $(document).ready(function () {
        $("#tbfirstper,#tbsecondnominee,#tbsecondper,#tbthitdnominee,#tbthirdper").blur(function () {
            var v1 = $("#tbfirstper").val(),
          v2 = $("#tbsecondper").val();
            if (!isNaN(v1)) {
                if (parseInt(v1, 10) == 100) {
                    $("#tbsecondnominee,#tbsecondper,#tbthitdnominee,#tbthirdper").attr("disabled", true);

                }
                else if (parseInt(v1, 10) < 100) {
                    $("#tbthitdnominee,#tbthirdper").attr("disabled", true);
                    $("#tbsecondnominee,#tbsecondper").attr("disabled", false);
                }
                if (!isNaN(v2)) {
                    if ((parseInt(v2, 10) + parseInt(v1, 10)) == 100) {
                        $("#tbthitdnominee,#tbthirdper").attr("disabled", true);
                    }
                    else if ((parseInt(v2, 10) + parseInt(v1, 10)) < 100) {
                        $("#tbthitdnominee,#tbthirdper").attr("disabled", false);
                    }
                }
            }
        });
    });
</script>

но это теперь работает..когда я ставлю 100 в текстовое поле tbfirstper, то другие текстовые поля не отключаются..

F-ES Sitecore

Посмотрите Источник страницы, есть ли у вас элементы с идентификаторами типа "tbfirstper" и т. д.? Это может быть идентификатор, который вы даете управляющему серверу, но для клиентской стороны (где работает jquery) идентификатор может быть изменен, особенно если вы используете главные страницы или элементы управления находятся внутри контейнеров. Если js находится на той же странице, что и элементы управления, то вместо этого делайте такие вещи

v2 = $("#<%=tbsecondper.ClientID%>"). val();

2 Ответов

Рейтинг:
2

Prasad Khandekar

Привет,

У вас нет кода для сброса атрибута disable, как только значение поля tbfirstper будет установлено на 100. Попробуйте добавить следующую строку в начале функции размытия.

$("#tbfirstper,#tbsecondnominee,#tbsecondper,#tbthitdnominee,#tbthirdper").attr("disabled", false);

Ваша функция javascript должна выглядеть так же, как показано ниже.
$("#tbsecondnominee,#tbsecondper,#tbthitdnominee,#tbthirdper").attr("disabled", true);
$(document).ready(function () {
    // if tbfirstper==100 then tbsecondnominee,tbsecondper,tbthitdnominee,tbthirdper is not enable.
    // If tbfirstper <100;then tbsecondnominee,tbsecondper is enable,
    // if tbfirstper+tbsecondper<100, then tbthitdnominee,tbthirdper is enable
    $("#tbfirstper,#tbsecondnominee,#tbsecondper,#tbthitdnominee,#tbthirdper").blur(function () {
        $("#tbsecondnominee,#tbsecondper,#tbthitdnominee,#tbthirdper").attr("disabled", true);
        var v1 = $("#tbfirstper").val(),
        v2 = $("#tbsecondper").val();
        if (!isNaN(v1)) {
            if (parseInt(v1, 10) == 100) {
                $("#tbsecondnominee,#tbsecondper,#tbthitdnominee,#tbthirdper").attr("disabled", true);
            }
            else if (parseInt(v1, 10) < 100) {
                $("#tbthitdnominee,#tbthirdper").attr("disabled", true);
                $("#tbsecondnominee,#tbsecondper").attr("disabled", false);
            }
            if (!isNaN(v2)) {
                if ((parseInt(v2, 10) + parseInt(v1, 10)) == 100) {
                    $("#tbthitdnominee,#tbthirdper").attr("disabled", true);
                }
                else if ((parseInt(v2, 10) + parseInt(v1, 10)) < 100) {
                    $("#tbthitdnominee,#tbthirdper").attr("disabled", false);
                }
            }
        }
    });
});

С уважением,


prodipjsr

что это значит?? сэр, мне не ясны ваши взгляды..

Prasad Khandekar

Если вы добавите вышеупомянутый оператор в качестве первой строки вашей функции размытия, то она сбросит все текстовые поля и включит их. Следующий код затем отключит необходимые текстовые поля.

prodipjsr

сэр, я изменил код (true на false), но все равно никакого эффекта ..

Prasad Khandekar

Я обновил решение, пожалуйста, проверьте его.

prodipjsr

Здравствуйте, сэр, нет обновления:; я не могу понять, в чем проблема, я использовал следующий элемент управления для текстовых полей.. есть какие-то проблемы??/

<fieldset>
Информация О Кандидате
< br / & gt;
Первый номинант имя <АСП:текстовое поле с ID="tbfirstnominee" стиль="текст-преобразования:заглавные" атрибут runat="сервер"и GT;
&ЛТ;СС1:FilteredTextBoxExtender идентификатор="FilteredTextBoxExtender8" атрибут runat="сервер" Фильтртип="LowercaseLetters,UppercaseLetters" TargetControlID="tbfirstnominee" /&ГТ;
  Процент &ЛТ;АСП:текстовое поле с ID="tbfirstper" параметр maxlength="3" атрибут runat="сервер" ширина="35 пикселей"&ГТ;
&ЛТ;СС1:FilteredTextBoxExtender идентификатор="FilteredTextBoxExtender9" атрибут runat="сервер" Фильтртип="число" TargetControlID="tbfirstper" /&ГТ;
< br / & gt;
< br / & gt;
Второе название Mominee &ЛТ;АСП:текстовое поле с ID="tbsecondnominee" стиль="текст-преобразования:заглавные" атрибут runat="сервер"и GT;
&ЛТ;СС1:FilteredTextBoxExtender идентификатор="FilteredTextBoxExtender12" атрибут runat="сервер" Фильтртип="LowercaseLetters,UppercaseLetters" TargetControlID="tbsecondnominee" /&ГТ;
  Процент &ЛТ;АСП:текстовое поле с ID="tbsecondper" параметр maxlength="3" атрибут runat="сервер" ширина="34px"&ГТ;
&ЛТ;СС1:FilteredTextBoxExtender идентификатор="FilteredTextBoxExtender10" атрибут runat="сервер" Фильтртип="число" TargetControlID="tbsecondper" /&ГТ;
< br / & gt;
< br / & gt;
Третье имя Mominee &ЛТ;АСП:текстовое поле с ID="tbthitdnominee" стиль="текст-преобразования:заглавные" атрибут runat="сервер"и GT;
&ЛТ;СС1:FilteredTextBoxExtender идентификатор="FilteredTextBoxExtender13" атрибут runat="сервер" Фильтртип="LowercaseLetters,UppercaseLetters" TargetControlID="tbthitdnominee" /&ГТ;
  Процент &ЛТ;АСП:текстовое поле с ID="tbthirdper" параметр maxlength="3" атрибут runat="сервер" ширина="34px"&ГТ;
&ЛТ;СС1:FilteredTextBoxExtender идентификатор="FilteredTextBoxExtender11" атрибут runat="сервер" Фильтртип="число" TargetControlID="tbthirdper" /&ГТ;
< br / & gt;
< br / & gt;
< / fieldset>

prodipjsr

кто-нибудь, пожалуйста, помогите мне..

Prasad Khandekar

Что вы подразумеваете под отсутствием обновлений? Если вы посмотрите на обновленное решение, данное мной, и у вас есть аналогичный код на Вашей странице, то он делает необходимые вещи, то есть у него будут отключены все элементы управления, кроме tbfirstper. Все элементы управления останутся в отключенном состоянии, если значение, введенное в tbfirstper, равно 100. в противном случае tbsecondnominee,#tbsecondper будет включен & tbthitdnominee,#tbthirdper останется в отключенном состоянии.

prodipjsr

сэр, когда я запускаю страницу через IE, то все текстовые поля включаются...

Prasad Khandekar

Хм ... Странно. Просто чтобы сузить поиск, попробуйте удалить расширители.

prodipjsr

в чем же на самом деле проблема??

Рейтинг:
2

jkirkerx

Я не стал тратить время на то, чтобы проверить его, просто быстро переписал то, как я его интерпретировал.

$(document).ready(function () {
        
    $("#tbfirstper,#tbsecondnominee,#tbsecondper,#tbthitdnominee,#tbthirdper").blur(function () {
        
        var txt_v1 = $("#tbfirstper").val();
        var txt_v2 = $("#tbsecondper").val();
        var v1 = parseInt(txt_v1);
        var v2 = parseInt(txt_v2);
                
        if (false == isNaN(v2)) {
            if (v1 == 100) {
                $("#tbsecondnominee,#tbsecondper,#tbthitdnominee,#tbthirdper").attr("disabled", "disabled");
 
            }
            else if (v1 < 100) {
                $("#tbthitdnominee,#tbthirdper").removeAttr("disabled");
                $("#tbsecondnominee,#tbsecondper").removeattr("disabled");
            }
        }
            
        if ((v1 + v2) == 100) {
                $("#tbthitdnominee,#tbthirdper").removeAttr("disabled");
            }
            else if ((v1 + v2) < 100) {
                $("#tbthitdnominee,#tbthirdper").removeAttr("disabled");
            }
        }
                
    });

});


prodipjsr

сэр, никаких новостей..

prodipjsr

кто-нибудь, пожалуйста, помогите мне!!!!

jkirkerx

Вы должны сказать мне, какая часть не работает. Оператор размытия не работает, и сценарий не работает?

Разве текстовые поля не отключены?

prodipjsr

Текстовые поля не отключаются.

jkirkerx

$(#te4xtbox). attr ("отключено", " отключено")

отключит текстовое поле в jquery

Похоже, что функция не работает, вы должны проверить ее с помощью alert("я выстрелил"), чтобы убедиться, что код срабатывает в состоянии размытия.

Убедитесь, что у вас загружен jQuery, сделав ссылку на него.
&ЛТ;скрипт СРЦ="jquery.js"&ГТ;&ЛТ;/скрипт>

http://learn.jquery.com/about-jquery/how-jquery-works/

prodipjsr

сэр, мой код::

< script type= "text/javascript">
$(документ).готово(функция () {

$("#tbfirstper,#tbsecondnominee,#tbsecondper,#tbthitdnominee,#tbthirdper"). blur(функция () {

var txt_v1 = $("#tbfirstper"). val();
var txt_v2 = $("#tbsecondper"). val();
var v1 = parseInt(txt_v1);
var v2 = parseInt(txt_v2);

if (false = = isNaN(v2)) {
если (v1 = = 100) {
$("#tbsecondnominee,#tbsecondper,#tbthitdnominee,#tbthirdper"). attr ("disabled", " disabled");

}
else if (v1 < 100) {
$("#tbthitdnominee,#tbthirdper"). removeAttr ("отключено");
$("#tbsecondnominee,#tbsecondper"). removeattr ("отключено");
}
}

если ((v1 + v2) = = 100) {
$("#tbthitdnominee,#tbthirdper"). removeAttr ("отключено");
}
иначе если ((v1 + v2) < 100) {
$("#tbthitdnominee,#tbthirdper"). removeAttr ("отключено");
}
}

});

});


< / script>

jkirkerx

Выглядит неплохо.

Вам нужно выполнить некоторые проверки, чтобы определить, почему он не работает, если текстовые поля не отключаются, есть причина, если предупреждение не срабатывает, у вас может не быть загруженного jquery, поэтому сделайте новое предупреждение после того, как документ будет готов, чтобы увидеть, загружен ли jquery вообще, затем пройдите вниз, проверьте событие размытия, к которому вы привязаны, а затем проверьте операторы if.

if (false = = isNaN(v2)) { if (v1 = = 100) {
alert ("v1= = 100(;
$("#tbsecondnominee,#tbsecondper,#tbthitdnominee,#tbthirdper"). attr ("disabled", "disabled");} else if (v1 < 100) {$("#tbthitdnominee,#tbthirdper"). removeAttr ("disabled"); $("#tbsecondnominee,#tbsecondper"). removeattr ("disabled"); } }