Започвам да опитвам да използвам 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 не се проверява, така че винаги се връща "не е проверено!". Ако искате да направите това, може да искате да слушате бутона за изпращане, дайте оценка на провереното състояние.