/ / Въпрос за начинаещ jQuery, квадратчета за отметки в релси - jquery, ruby-on-rails, checkbox

Въпрос на jQuery за начинаещи, квадратчета за проверка в релси - jquery, ruby-on-rail, квадратче за отметка

Започвам да опитвам да използвам abit на jQuery в приложението си, за да променя някои css в зависимост от това дали е отметнато квадратче за отметка или не, започвам с този бит код според мен:

<script type="text/javascript">
$(document).ready(function() {
if($("#area-1").is(":checked")) {
alert("checked!");
} else {
alert("not checked!");
}
});
</script>

И това е, което се показва за моите отметки в източника:

<div class="filter_options_container">
<form class="form">
<fieldset class="filter_form_fieldset areas">
<input id="area-1" name="areas[]" type="checkbox" value="1" />
<label for="area-1"><p1>Area1</p1></label>

<input id="area-2" name="areas[]" type="checkbox" value="2" />
<label for="area-2"><p1>Area2</p1></label>
</fieldset>
<div class="form_filter_button">
<p2><input type="submit" value="Filter"/></p2>
</div>
</form>
</div>

редактиране
Код за преглед на релси за формата:

<div class="filter_options_container">
<form class="form">

<fieldset class="filter_form_fieldset areas">
<% Area.all.each do |a| %>
<%= check_box_tag "areas[]", a.id, false, :id => "area-#{a.id}" %>
<label for="area-<%= a.id %>"><p1><%= a.name %></p1></label>
<% end %>
</fieldset>

<div class="form_filter_button">
<p2><input type="submit" value="Filter"/></p2>
</div>
</form>
</div>

Очаквах, че ще даде предупредително съобщение, което казва "проверено" при проверка на полето1 и подаване на формуляра, но то се връща само "не е проверено" защо е така?

Благодаря за всяка помощ!

Отговори:

1 за отговор № 1

Изглежда, че пропускате обработващ събитие, свързан към change/click* събитие на area-1 елемент. Кодът, който имате, ще извика сигнала само когато DOM се зареди, а не когато стойността се е променила. Мисля, че искаш нещо подобно

<script type="text/javascript">
$(document).ready(function() {
$("#area-1").click(function() {
alert(this.checked? "checked!" : "not checked!");
});
});
</script>

Пример за код за да имате игра с

*на събитието за промяна не се задейства в същия момент в браузърите така че вместо това се препоръчва събитието за щракване. JQuery обаче отстранява този проблем в браузърите.


1 за отговор № 2

Ако искате нещо да се случи, когато кликнете върху квадратчето, ще трябва да регистрирате мениджър на събитията в квадратчето.

$(document).ready(function() {
$("#area-1").click(function(){
if($(this).is(":checked")) {
alert("checked!");
} else {
alert("not checked!");
}
});
});

Ако искате логиката да се активира при изпращане на формуляр, можете да регистрирате функция $("form").submit();

$("form").submit(function() {
if ($("#area-1").is(":checked")) {
alert("checked!");
} else {
alert("not checked!");
}
});

Пример за това на jsfiddle.


0 за отговор № 3

Можете да опитате това:

<script type="text/javascript">
$(document).ready(function() {
if($("#area-1:checked").length > 0) {
alert("checked!");
} else {
alert("not checked!");
}
});
</script>

0 за отговор № 4

Изглежда, че викате функция, когатодокумент е готов. Първоначално проверете bos не се проверява, така че винаги се връща "не е проверено!". Ако искате да направите това, може да искате да слушате бутона за изпращане, дайте оценка на провереното състояние.