Как заставить изображения вести себя как флажки в форме? - PullRequest
1 голос
/ 19 мая 2011

Я хочу разместить несколько изображений внутри формы и выбрать их, просто щелкнув по ним мышью.После того, как изображение выбрано, я могу показать рамку вокруг него, указывающее, что оно было выбрано, например, флажки позволяют выбрать несколько изображений в одной форме.

Но как это сделать?Я не уверен, как заставить форму регистрировать изображения как выбранные элементы, поэтому при отправке формы на сервер значения этих изображений также будут отправлены.

Хотел бы я простоустановите изображения в качестве фона флажков, но, конечно, это не будет работать из-за ограничений браузера.Любые идеи о том, как это можно сделать?

Ответы [ 3 ]

1 голос
/ 19 мая 2011

для вашего HTML есть это.

<form id="form1">
    <img src="barney.jpg" title="barney" id="barneyCheckImage" />
    <input type="checkbox" id="imgCheck" name="imgCheck" value="barney" style="visibility: hidden;" />
    <input type="submit" value="Submit" />
</form>

для ваших скриптов

$(document).ready(function() {

    $('form#form1').find('img#barneyCheckImage').toggle(
        function(){
            $(this).css('border', '1px solid green');
            $('form#form1').find('input[id=imgCheck]').attr('checked', 'checked');
        },
        function(){
            $(this).css('border', 'none');
            $('form#form1').find('input[id=imgCheck]').removeAttr('checked');
        }
    );

    // just to test for the checkbox.
    $('form#form1').submit(function(e){
        e.preventDefault();
        var form = $('form#form1').serialize();
        alert(form);
    });
});

Edit:

Я отредактировал его для беспокойства BalusC.

Для изображения типа ввода вы также можете сделать $('#imgCheck') напрямую вместо $('form#form1').find('input[id=imgCheck]'), но для меня я не хочу, чтобы в моей форме было много идентификаторов.

0 голосов
/ 19 мая 2011
<!-- Choose some styles for our custom form elements -->
<style>
    .imageCheckbox {
        display: none;
    }

    .imageToggle .toggleImage {
        /* default/unselected image styles here */
    }
    .imageToggle .selectedImage {
        /* selected image styles here */
    }
</style>

<!-- Add a script to handle when the user clicks on an image -->
<script>
    function toggleImage(containerElem) {
        //toggle the checkbox value
        var checkBox = containerElem.getElementsByClassName("imageCheckbox");
        checkBox.checked = ! checkBox.checked;

        //update the image styles
        var image = containerElem.getElementsByClassName("toggleImage");
        if (checkBox.checked) {
            image.className += " selectedImage";
        }
        else {
            image.className = "toggleImage";
        }
    }
</script>

<!-- Build the form -->
<form>
    <div class="imageToggle" onclick="toggleImage(this);">
        <input class="imageCheckbox" type="checkbox" id="checkbox_0" name="checkbox_0" />
        <img class="toggleImage" src="/img_0.png" />
    </div>
    <div class="imageToggle" onclick="toggleImage(this);">
        <input class="imageCheckbox" type="checkbox" id="checkbox_1" name="checkbox_1" />
        <img class="toggleImage" src="/img_1.png" />
    </div>
    <!-- etc. -->
</form>
0 голосов
/ 19 мая 2011

проверить: http://api.jquery.com/image-selector/

<input type="image" />

 $("input:image").css({background:"yellow", border:"3px red solid"});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...