2009-11-05 2 views
0

Пожалуйста, помогите, я пытаюсь ввести код для selectAll или удалить все с помощью JQuery. У меня есть checkboxlist, и значение id кажется неправильным. Id в поджигатель показывает значение "<% = checkboxId.ClientID%>"Необходимость выбораВсе или Очистить все флажки

Благодаря SA

Часть кода:

<a href="javascript:void(0);" onclick="selectClearAlltest('<%= checkboxId.ClientID %>', true)">Select All</a> | 
<a href="javascript:void(0);" onclick="selectClearAlltest('<%= checkboxId.ClientID %>', false)">Clear All</a> 
<asp:checkboxList id="checkboxId" runat="server" /> 

Сценарий:

function selectClearAlltest(id, value) { 
     var chks = $("#" + id + ":input"); 
     chks.attr("checked", value); 
    } 

ответ

1

Ваш селектор ошибочен, он составляет #checkboxId:input. Вы должны добавить еще один пробел (вы ищете потомков), и лучше:

var chks = $("#" + id + " input:checkbox"); 
+0

У меня есть asp: checkboxlist. Так что я должен заменить его «input: checkoboxlist»? – 2009-11-05 06:58:43

+1

Нет. 'asp: checkboxlist' является * серверной стороной *, он не существует как таковой на стороне клиента - он преобразуется в обычные флажки -' '. Вы можете использовать 'View Source' на своей странице, чтобы это увидеть. – Kobi

+0

хорошо! Ты прав. Это флажок. – 2009-11-05 07:05:07

0

добавив имя класса будет делать вещи проще например

<asp:checkboxList id="checkboxId" runat="server" CssClass="whatever"/> 

и код JQuery:

function selectClearAlltest(value) { 
     $(".whatever").attr("checked", value); 
} 

или даже лучше, используя в качестве jQuery.toggle

$("#select_all_element_id").toggle(
    function() { 
    $(".whatever").attr("checked", "checked"); 
    }, 
    function() { 
    $(".whatever").removeAttr("checked"); 
    }, 
); 

Пример:

<html> 
    <head> 

    </head> 
    <body> 
    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.3/jquery.min.js"></script> 
    <a id="toggle-select" href="#">select/deselect all</a> 
    <hr/> 
     <input type="checkbox" class='foo'>Click</input> 
     <input type="checkbox" class='foo'>On</input> 
     <input type="checkbox" class='foo'>The</input> 
     <input type="checkbox" class='foo'>The</input> 
     <input type="checkbox" class='foo'>Link</input> 
     <input type="checkbox" class='foo'>Above</input> 
     <input type="checkbox" class='foo'>To</input> 
     <input type="checkbox" class='foo'>Change</input> 
     <input type="checkbox" class='foo'>My</input> 
     <input type="checkbox" class='foo'>Attributes</input>   

    <script> 
     $(document).ready(function(){ 
      $("#toggle-select").toggle(    
       function() { 
       $(".foo").attr("checked", "checked"); 
       },    
       function() { 
       $(".foo").removeAttr("checked"); 
       } 
      ); 
     }); 
    </script> 
    </body> 
+0

Это 'CssClass =" независимо от '' и '$ ('. Any input: checkbox')' – Kobi

+0

Я не знакомый с asp.net, но я предположил, что это никогда не будет так просто, как class = ;-). исправление его inline tough –

+0

Пока еще нет, '.whatever' является контейнером многих флажков, вы не можете установить его атрибут' checked' (ну, я думаю, вы можете, но без эффекта ...). – Kobi

0

Если Поджигатель находится с Howing вы <%= и %>, то это означает, что ваша страница не была правильно разобрана/интерпретирована сервером.

Эти последовательности символов обычно означают код , обработанный сервером, и не попадают в фактическую разметку. Например, пытаетесь ли вы выполнить ASP-код в файле .html? Или ... вы пытаетесь выполнить ASP-код на PHP-сервере?

Еще один способ проверить это - просто сделать view source на странице и посмотреть, действительно ли генерируется ваш серверный код!

Удачи!
-Mike