2015-02-18 5 views
1

Мне нужно сделать видимым checkbox и текст рядом с ним, только если заполнен textbox. В противном случае он должен быть невидим.включить checkbox только тогда, когда текстовое поле не пусто. Asp.net

<p>Telefon:<asp:TextBox ID="txtPhone" runat="server"></asp:TextBox></p> 
<asp:CheckBox ID="CheckBox2" runat="server" Visible="False" Text="bla bla"/> 

Это будет нормально либо позади кода, либо по javascript.

+2

«Все будет в порядке». Нет, это плохой способ подумать об этом. Если взаимодействие с сервером не требуется, тогда * не включайте * сервер. Где ваша попытка сделать эту работу? – mason

+0

'$

Telefon:

' – user3623053

+1

Это не попытка. Это только ваша разметка, из которой вы начинаете. Сделайте попытку выполнить то, что вы хотите. Вы четко знаете, что это можно сделать с помощью JavaScript. Вы знаете, что инициирующее действие - [когда изменяется значение текстового поля] (http://stackoverflow.com/questions/1481152). И знаете, что действие, которое вы хотите сделать, - проверить, пусто ли текстовое поле или нет, а затем сделать флажок и некоторый текст видимый или нет. Вы знаете все части. – mason

ответ

2

ответ Мейсона частично работает для меня, а это означает, что идентификаторы были статичными, и это может ударить как условия внутри JQuery. Тем не менее, мой HTML обрабатывался с помощью CheckBox2 с элементом <span></span>. Поэтому я должен был сделать это, чтобы он работал.

<p>Telefon:<asp:TextBox ID="txtPhone" ClientIdMode="static" runat="server"></asp:TextBox> 
<asp:CheckBox ID="CheckBox2" ClientIdMode="static" runat="server" Text="blabla" style="display: none;" /> 

$(function() { 
    $('#txtPhone').on('input propertychange paste', function() { 
     if ($('#txtPhone').val()) { 
       $("#CheckBox2").parent().show(); 
       } 
       else { 
        $("#CheckBox2").parent().hide(); 
       } 
      }); 
     }); 
+0

Я не задавал вопросов ...? Мой ответ был полным, хотя я объяснил, что элемент span был там. Не нужно это показывать. Нит-придирчивый стек переполняет людей. Ой, подождите, вы приняли меня за ОП? – CrazyPaste

+0

Спасибо, что он отлично работает :) – user3623053

+1

Извините, вы смутились с человеком, который задал вопрос. И я не совсем понял, откуда вы сказали, что оттуда исходит (ваша формулировка немного запутанна). Если ваш ответ совпадает с существующим, за исключением незначительной разницы, обычно лучше оставить комментарий, а не создавать свой собственный ответ. – mason

1

Вы должны сделать это с помощью JavaScript. This question показывает, как определить, когда изменяется значение текстового поля. This question рассказывает нам, как определить, пусто ли текстовое поле или нет. This demo показывает нам, как скрыть и показать вещи с помощью jQuery.

Обратите внимание, что я сделал ClientIdMode="static" для элементов управления, чтобы избежать наличия разных идентификаторов на стороне клиента, чем на сервере. И вместо того, чтобы использовать свойство Visible на флажке, я использую CSS display: none. Visible="false" даже не отправил разметку для флажка клиенту, и нам нужна эта разметка, чтобы мы могли показать ее без обратной передачи.

<p>Telefon:<asp:TextBox ID="txtPhone" ClientIdMode="static" runat="server"></asp:TextBox></p> 
<asp:CheckBox ID="CheckBox2" ClientIdMode="static" runat="server" Text="bla bla" style="display: none" /> 

$(function() {  
    $('#txtPhone').on('input propertychange paste', function() { 
     if($('#txtPhone').val()){ 
      $("#CheckBox2").show(); 
     } 
     else{ 
      $("#CheckBox2").hide(); 
     } 
    }); 
}); 
+0

Хм, все еще не работает. Мне удается сделать это, чтобы автоповтор был установлен в true, но проблема в том, что он появляется, только если я выхожу за пределы текстового поля. Есть ли когда-либо автоповтор после того, как я что-то написал в текстовом поле, не требуется внешний клик? – user3623053

+0

@ user3623053 Опишите, пока не работает. Вы точно использовали мой код? Как он не работает так, как вы хотите? И нет, вы не нуждаетесь в обратной передаче **, чтобы выполнить это. Почему в мире вы хотите, чтобы сервер был связан с изменением чего-то простого в DOM на клиенте? Совершенно ненужно, пустая трата ресурсов и плохая привычка программирования. * Делайте вещи на клиенте, когда не требуется участие сервера *. – mason

+0

Я хотел сделать это, потому что это единственный способ, который работает. Я пробовал более 10 кода javascripts, и никто из них не работает. Я изменил все, что нужно, и ничего не произошло на странице. Я заполнил текстовое поле числом, но флажок до сих пор не отображается. – user3623053

Смежные вопросы