JavaScript — функция проверки

Мне нужно проверить DropDownList в проекте ASP.NET, и я пытаюсь использовать JavaScript, хотя никогда раньше его не использовал.

Я использую следующее объявление ASP и код JavaScript:

Декларация ASP:

<asp:DropDownList ID="ddl1" runat="server" onprerender="ddl1_PreRender" ValidationGroup="AddNewCollection">
</asp:DropDownList>
<asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="Choose Type!"
ControlToValidate="ddl1"  ForeColor="Red" ValidationGroup="AddNewCollection" ClientValidationFunction="clientSideCheckValue"></asp:CustomValidator>>

Код JavaScript:

 <script type="text/javascript">
    function clientSideCheckValue(source, args) 
     {
       var result1 = args.Value;   
       var rsult2 = document.getElementById("ddl1").value;
       if (result2 == null) {
          args.IsValid = false;
          return true;
       }
      args.IsValid = true;
    }
</script>

У меня есть два вопроса о коде, упомянутом выше:

1.Почему, когда я печатаю код этой строки, var result1 = args.Value; intelisense не дает мне возможность выбрать расширение «Value».

2. В этой строке кода JavaScript var rsult2 = document.getElementById("ddl1").value;

Я получаю это сообщение об ошибке Ошибка выполнения Microsoft JScript: требуется объект. Есть ли у вас какие-либо идеи, почему я столкнулся с этой проблемой и как ее исправить?

Заранее спасибо.


person Michael    schedule 01.02.2012    source источник


Ответы (2)


@Paul: «intelisense не может узнать, какие свойства/методы есть у args, поэтому он не может дать вам такой вариант». Совершенно верно.

@Майкл:

Предполагая, что ваш JavaScript находится в разметке .aspx, измените строку на var rsult2 = document.getElementById("‹%=ddl1.ClientID" %>).value;. Это отобразит фактический идентификатор клиента вашего DropDownList внутри блока скрипта.

Кроме того, вы, похоже, просто проверяете, выбран ли вариант. Гораздо проще добавить <asp:RequiredFieldValidator /> и установить для свойства ControlToValidate значение «ddl1», если это все, что вы хотите сделать.

Надеюсь это поможет.

person pete    schedule 02.02.2012

  1. У intelisense нет возможности узнать, какие свойства/методы есть у args, поэтому он не может дать вам такую ​​возможность.

  2. Скорее всего, вы используете мастер-страницу, и в этом случае значение идентификатора элемента будет изменено на что-то вроде ct100_ddl1 или что-то в этом роде, не совсем помню, что у меня в голове.

Предложите вам получить достойный браузер для разработки этого материала, chrome или FF + firebug, чтобы вы могли проверять html и отлаживать js.

person Paul Creasey    schedule 02.02.2012