Проблема с переключателями в ASP.NET MVC и Jquery - PullRequest
1 голос
/ 22 августа 2011

У меня есть следующее на мой взгляд:

<%=Html.RadioButton("optAll", "1", true)%> &nbsp Choose All
<br />
<%=Html.RadioButton("optAll", "2", false)%> &nbsp Choose Specific

Следует jquery:

$("#optAll").click(function () {
       alert ("Hitting the click function");
    });

Проблема в том, что предупреждение появляется только при нажатии радиокнопки «Выбрать все». Он не появляется при нажатии радиокнопки «Выбрать конкретную».

Работы следующих видов:

$(":input[@name='optAll']").change(function () {
       alert ("Hitting the click function");
    });

но это решение вызывает сообщение, когда флажки на той же странице нажаты.

Я тоже безуспешно попробовал следующее:

$("#optAll").click(function () {
       alert ("Hitting the click function");
    });

Ответы [ 5 ]

2 голосов
/ 22 августа 2011

попробуйте это:

$("input[name='optAll']").click(function () {
                alert("Hitting the click function");
            });
2 голосов
/ 22 августа 2011

Если у вас больше нет входов с именем optAll, должно работать следующее:

$(":input[name='optAll']").change(function () {
   alert ("Hitting the click function");
});

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

$(":radio[name='optAll']").change(function () {
   alert ("Hitting the click function");
});
2 голосов
/ 22 августа 2011

Ваша проблема в том, что вы используете несколько идентификаторов, вы должны вместо этого использовать классы.HTML поддерживает только ОДИН из каждого идентификатора на странице, поэтому вы не можете иметь #optAll более одного раза на одной странице, вместо этого вы должны использовать класс.Используйте .optAll для поиска jQuery и сделайте так, чтобы в текстовых областях также были классы optAll.

1 голос
/ 22 августа 2011

Ваша существующая разметка выглядит так:

<%=Html.RadioButton("optAll", "1", true)%> &nbsp Choose All
<br />
<%=Html.RadioButton("optAll", "2", false)%> &nbsp Choose Specific

Вам нужно изменить его, чтобы у каждого был свой отдельный класс, который может видеть jQuery, поэтому я бы рекомендовал использовать сам HTML, а не ASP, чтобы генерировать переключатели для вас. Сделайте это с помощью следующего:

<input class="radioButtons" type="radio" name="optAll" value="all" /> &nbsp Choose All <br />
<input class="radioButtons" type="radio" name="optAll" value="specific" /> &nbsp Choose Specific

Теперь измените jQuery так, чтобы он стал таким:

$(".radioButtons").click(function () {
   alert ("Hitting the click function");
});
1 голос
/ 22 августа 2011

Поскольку вы выбираете по идентификатору для установки функции щелчка, jQuery выбирает только один элемент (первый в документе с таким идентификатором). Если вы хотите изменить только эти два, измените их идентификаторы, чтобы они отличались, и напишите $ ('# id'). Click () для них обоих. Если у вас есть несколько таких наборов, и было бы очень сложно написать отдельные строки для каждой кнопки, и вы бы предпочли одну для каждого набора, затем присвойте им одинаковые идентификаторы (например, «optALL1» и «optALL2» в данном случае) и используйте следующее:

$('input[id|="optALL"]').each($(this).click(function() { alert(""); }))

где input [id | = "optALL"] выберет все элементы ввода, идентификатор которых начинается с "optALL"

...