Jquery选择图像并提交。 (表格结构)

时间:2013-04-17 15:48:58

标签: jquery image jquery-selectors this form-submit

这是我的问题,我想选择一个图像并使用jquery提交,所以我有不同的图像,我选择一个并提交。

所以我的想法就是当我点击我的LabBox中的某些图像时,例如,' images / dontlike_OFF.png',我创建一个选择属性($(this).attr('select', 'true');以后,当我点击在sendLabForm我希望使用选择器$(#LabBox img[attribute=Value])获取我点击过的图片的名称。

我相信这个创建属性的想法很奇怪,但我真的可以看到,在firebug上,该属性是真正创建的,只有当我想获得具有所选属性的img的名称时才会出现问题。

所以,我的问题是:为什么这不可能? 当我点击提交按钮而不使用通常的html表单时,有一些方法可以获得我选择的img的名称吗?

<div id='LabBox'>
    <img alt="dontlike" name="dlike" src="images/dontlike_OFF.png"/>
    <img alt="check" name="check" src="images/check_OFF.png"/>
    <img alt="funny" name="funny" src="images/funny_OFF.png"/>
    <img alt="idea" name="gidea" src="images/idea_OFF.png"/>
    <img alt="imp" name="imptt" src="images/imp_OFF.png"/>
 </div>   
    <script type="text/javascript">

        $("#LabBox img").click(function () {
                $(this).attr('select', 'true');     
            });

        $("#sendLabForm").click(function(){
            console.log($("#LabBox img[select='true']").name);     
        });


    </script>

4 个答案:

答案 0 :(得分:2)

你应该使用data(),类似的东西:

DEMO

$("#LabBox img").click(function () {
     $(this).data('select', true);
 });

 $("#sendLabForm").click(function () {
     var selectedImgs = [];
     $("#LabBox img").each(function () {
         $(this).data('select') ? selectedImgs.push(this.name) : false;
     });
     alert(selectedImgs.join(','));
 });

答案 1 :(得分:1)

您应该做的是创建与图像关联的复选框列表(或使用数据属性,如下面所述)。如果您希望用户单击图像,则可以隐藏该复选框,只需在图像和复选框之间创建关联。提交表单时,会提交复选框值中的图片网址字符串。

你应该做的是发明属性。

答案 2 :(得分:0)

为什么不简单地将选定的图像分类?

$('#LabBox img').click(function(e){
    $(this).toggleClass('active');
});

$('form').submit(function(){
    console.log( $('#LabBox img.active') );
});

答案 3 :(得分:0)

这是我解决问题的方法。实际上,您可以创建属性,只需指定.attr()方法即可获得它们。

这确实有用。

$("#LabBox img").click(function () {

        $(this).attr('select', true);
});


$("#sendLabForm").click(function(){

    console.log( $('#LabBox img[select="true"]').attr('name'));

    });

目前我认为此方法没有任何不利之处,但如果您发现此方法存在任何问题,请告知我们。