JQuery проверить / снять проблемы - PullRequest
0 голосов
/ 02 сентября 2010

Я использую gridview, у которого есть переключатель в одном из столбцов.Он используется как флаг true / false.В любом случае, из-за характера моего проекта, я требую, чтобы javascript отключал любые переключатели, когда я проверяю другой.Это прекрасно работает, за исключением того, что мой gridview обернут в панель обновления.Я забочусь о повторной активации jQuery на автоответчике назад, но то, что происходит, происходит при отправке назад, удалении моего проверенного переключателя и не установке его обратно.Если я не использую jQuery, он работает нормально (но тогда я не получаю эксклюзивность кнопки), поэтому я думаю, что это мой код.Вот код, который у меня есть.

<script type="text/javascript">
$(document).ready(function () {
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
    function EndRequestHandler(sender, args) {
        $("input").click(function () {
            $("input").removeAttr('checked');
            $(this).attr('checked','checked');
        });
    }
    $("input").click(function () {
        $("input").removeAttr('checked');
        $(this).attr(':checked');
    });

});

Есть ли лучший способ написать этот код?Спасибо.

Ответы [ 5 ]

0 голосов
/ 23 декабря 2014

Попробуйте

Для радио кнопки

function toggleCheckRadioButton(sender) {
    var res;
    if ($(sender).attr('previousValue') == 'true') {
        $(sender).attr('checked', false)
        res = false;
    } 
    else {
        $(sender).attr('checked', true);
        res = true;
    }

    $('form input[type="radio"][name$="' + $(sender).attr('name') + '"]').each(function () {
        $(this).attr('previousValue', false);        
    });

    $(sender).attr('previousValue', res);    
}

Для списка радиостанций

function initToggleCheckRadioList(sender) {
    $(sender).find('input[type="radio"]').each(function () {
        $(this).click(function () { toggleCheckRadioButton(this); });
    });
}
0 голосов
/ 07 октября 2010

Я изменил ваш код следующим образом:

if( $('input.any-radio').length ){ $('input.any-radio').change(function(){ $('input.any-radio').removeAttr('checked'); $(this).attr('checked', 'checked'); });}

, и он работает для меня!

0 голосов
/ 02 сентября 2010

Если вы установите одинаковое имя (а не идентификатор) переключателей, HTML автоматически сделает выбор исключительным для вас без необходимости в jQuery. Вот так коробка радио отличается от флажка. Я бы сначала посмотрел на это, так как вам не понадобится куча JS, чтобы делать то, что делает HTML, если вы все настроите правильно.

0 голосов
/ 12 сентября 2010

Я решил эту проблему, изменив часть своего кода t-sql и вообще не используя jquery.

0 голосов
/ 02 сентября 2010

пара вещей:

$(this).attr(':checked'); //this doesnt look right.. what are you trying to do here?

$('input') // this will target all input fields on the page, all radio buttons, textboxes etc. i don't think u want that. try giving the radio's IDs and use the ID selector to select them in jQuery
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...