Поиск элемента списка из сгенерированного JavaScript JavaScript

0

Вот весь код, который я использую для этого многосегментного окна, которое я нашел на многосегментной странице

HTML:

<link href="jquery-ui.css" rel="stylesheet" />
<link href="ui.multiselect.css" rel="stylesheet" />

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.5.1/jquery.min.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.10/jquery-ui.min.js"></script>
<script src="jquery.localisation-min.js"></script>
<script src="ui.multiselect.js"></script>

<script type="text/javascript">
    $(function () {
        $(".multiselect").multiselect();
    });
</script>

<form runat="server">
    <select class="multiselect" multiple="true" style="width:460px; height:200px;">
        <option value="AA">[email protected]</option>
        <option value="AB">[email protected]</option>
        <option value="AC">[email protected]</option>
        <option value="AD">[email protected]</option>
        <option value="AE">[email protected]</option>
        <option value="AF">[email protected]</option>
   </select>

    <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click"/>
    <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
</form>

С#:

protected void Button1_Click(object sender, EventArgs e)
{
    String[] emailList = new String[1000];
    //find the ul in the html and loop through each li
}

То, что все это переводится на стороне клиента, - это (я не уверен, что все это на 100% правильно, как я только что скопировал и вставил, если из браузера, однако вся соответствующая информация здесь):

<div class="ui-multiselect ui-helper-clearfix ui-widget" style="width: 514px;">
    <div class="selected" style="width: 272px;">
        <div class="actions ui-widget-header ui-helper-clearfix">
            <ul class="selected connected-list ui-sortable" id="multiselectedItems" runat="server" style="height: 164px;">ev
                <li class="ui-helper-hidden-accessible" style=""/>
                <li class="ui-state-default ui-element ui-draggable" title="[email protected]" style="display: list-item;">ev
                <li class="ui-state-default ui-element ui-draggable" title="[email protected]" style="display: list-item;">ev
            </ul>
        </div>
    <div class="available" style="width: 234px;">
</div>

Теперь для вопроса мне нужно найти и пропустить каждый из этих элементов списка в неупорядоченном списке, получить атрибут title и сохранить его в строчном массиве при нажатии кнопки. Я уже пытался найти элемент управления, используя Form.Request ["multiselect"] и Page.FindControl ["mutliselect"], но не тех, кто работал. Как всегда, любая помощь приветствуется, спасибо.

EDIT # 1: я смотрел и искал, но там apparantly не способ сделать это, однако, вместо того, чтобы создавать новый почти идентичный вопрос, я просто отредактирую этот... Есть ли способ изменить файл javascript из ящика мультиселектора, связанного выше? Я думал, что если это возможно, тогда было бы проще просто позволить javascript добавить атрибут в элемент управления в пределах выбора... Я просто не уверен, где в javascript я могу добавить это, так что возникает вопрос.... Где в этом многозадачном файле javascript я должен отредактировать, чтобы добавить атрибут к правильно выбранному параметру?

  • 0
    В JavaScript или C # ??
  • 0
    Мне нужно найти его с помощью C #
Теги:

2 ответа

0

Один из способов, конечно, не самый элегантный, - использовать HtmlAgiliyPack для очистки кода для элементов <li> и извлечения заголовка

var doc = new HtmlAgilityPack.HtmlDocument();
//Path to the file on the filesystem
doc.LoadHtml("patch to your htmlfile");

if (!doc.DocumentNode == null)
{
   foreach (HtmlNode node in doc.DocumentNode.SelectNodes("//li[@class='email']"))
   {
       //add title to your array
       //I recommend using a List<string> instead
       //list.Add(node.innerHtml);
   }

}

Если вы хотите загружать ресурсы из Интернета, вам нужно использовать несколько другой код:

var web = new HtmlAgilityPack.HtmlWeb();
var doc = web.Load("http://www.path.com/to/your/file.html");
foreach(var node in doc.DocumentNode.SelectNodes("//li[@class='email']"))
{
  //...
}
  • 0
    Будет ли это работать, даже если это файл ASPX, а не HTML-файл?
  • 0
    Да, полностью, проверьте codeproject.com/Articles/659019/… для быстрого обучения тому, как это работает.
Показать ещё 2 комментария
0

вы можете дать команду runat = "server" и id в ваш элемент select html

   <select runat="server" Id="SelectList" class="multiselect" multiple="true" style="width:460px; height:200px;">
            <option value="AA">[email protected]</option>
            <option value="AB">[email protected]</option>
            <option value="AC">[email protected]</option>
            <option value="AD">[email protected]</option>
            <option value="AE">[email protected]</option>
            <option value="AF">[email protected]</option>
       </select>


    ***


protected void Button1_Click(object sender, EventArgs e)
{
    (System.Web.UI.HtmlControls.HtmlSelect)SelectList.SelectedIndices.. 
    String[] emailList = new String[1000];
    //find the ul in the html and loop through each li
}
  • 0
    К сожалению, это не работает ... он вернет все электронные письма, а не только выбранные электронные письма. Похоже, что JavaScript редактирует только сгенерированный код, а не этот элемент управления HtmlSelect.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню