Javascript 如何在表单中选择项目、更改背景并提交

Javascript 如何在表单中选择项目、更改背景并提交,javascript,jquery,Javascript,Jquery,我正在尝试选择一个项目元素,然后将背景颜色更改为蓝色(选中时)禁用任何其他项目更改背景颜色,即只能选择一个元素,然后提交表单。我只想在选择某个项目时提交 $document.readyfunction{ $'form'。在'click','div',函数{ e、 防止违约; $'done'。attr'disabled','disabled'; $'input'.removeClass'bluebg'; $'div'。删除类'bluebg'; $this.addClass'bluebg'; };

我正在尝试选择一个项目元素,然后将背景颜色更改为蓝色(选中时)禁用任何其他项目更改背景颜色,即只能选择一个元素,然后提交表单。我只想在选择某个项目时提交

$document.readyfunction{ $'form'。在'click','div',函数{ e、 防止违约; $'done'。attr'disabled','disabled'; $'input'.removeClass'bluebg'; $'div'。删除类'bluebg'; $this.addClass'bluebg'; }; $“确定”。单击函数{ 如果$'div'.hassclass'bluebg' { document.location.href='page.aspx'; } 否则{alert'项目未被选中';} }; }; 项目1 项目2 项目3 您的代码可以工作:

编辑:我的建议是在表单中添加一个标识符,并使用更具体的选择器,因为使用$'div'。removeClass'bluebg';您正在从页面内的所有div中删除该类

$document.readyfunction{ $'myform'。在'click','div',函数{ e、 防止违约; $'done'。attr'disabled','disabled'; $'myform input'.removeClass'bluebg'; $'myformdiv'.removeClass'bluebg'; $this.addClass'bluebg'; }; $“确定”。单击函数{ 如果$'myformdiv'.hasglass'bluebg' { document.location.href='page.aspx'; } 否则{alert'项目未被选中';} }; }; 表格组{ 填充:10px0; } 布鲁伯格先生{ 背景:蓝色 } 项目1 项目2 项目3
为了运行您的示例,我下载了我在头部显示的jquery版本,基本上我应用了3个方面:

1使用selectedId变量保留所选项目的id。 2将按钮输入更改为提交输入,并使用CSS添加图像。 3添加隐藏输入以存储您的选择

<html>
<head>
<script src="js/jquery-1.11.3.min.js"></script>
<style type="text/css">
.bluebg {
    background-color: blue;
}
.ok-button {
    /* Change this for your image location */
    background: url(OK.gif); 
    /* Adjust according to your image */
    width: 20px;
    height: 20px;
}
</style>
<script>
    var selectedId = null;
    $(document).ready(function() {
        $('form').on('click', 'div', function(e) {
            e.preventDefault();
            $(this).addClass('bluebg');
            if (selectedId != null) {
                $('#' + selectedId).removeClass('bluebg');
            }
            selectedId = $(this).attr('id');
            $('#myItem').val(selectedId);
        });
        $('#myForm').submit(function() {
            if (selectedId != null) {
                return true;
            } 
            alert('Item is not selected');
            return false
        });
    });
</script>
</head>
<body>
    <form id="myForm" action="page.aspx" method="POST">
        <div id="item1">Item1</div>
        <div id="item2">Item2</div>
        <div id="item3">Item3</div>
        <input id="myItem" name="myItem" type="hidden" /> 
        <input type="submit" class="ok-button" value="" />
    </form>
</body>

到底是什么问题?我把你的东西作为一个片段。还没有足够的东西来解决这个问题。请添加您的CSS和其他相关HTML。可能是您没有正确定义bluebg类。代码对我来说很好。@Mikey:当我执行$'ok'时。第一次单击时,它会给我提示,但随后整个表单的背景变为蓝色。这段代码没有任何意义。您正在表单提交之前执行重定向,并且表单上的提交处理程序被阻止…它永远不会提交问题是当我执行$'ok'时。单击,我将获得整个表单的蓝色背景。我该如何预防呢?