jquery实现单选和不选的功能问题——求高手!

jellday 2013-10-27 10:35:01

<div style="margin:20px">
<input name="a" type="checkbox" value="1" /><span>1</span>
<input name="a" type="checkbox" value="2" /><span>2</span>
<input name="a" type="checkbox" value="3" /><span>3</span>
<input name="a" type="checkbox" value="4" /><span>4</span>
<input id="t" type="text" value="" />
</div>


$(function(){
$(":checkbox[name=a]").click(function(){
if($(this).attr('checked')){
$("input:checkbox[name=a]").not($(this)).attr('checked',false);
}
});
});

以上已经是单选功能
请问,怎么样修改才能实现,选中后,输入框T加上选中的值,不选中将删去复选框的值。
请勿使用$('#t')val("")来重置输入框T,因为输入框可接受用户输入,不能将用户输入的值删除,只能删去复选框的值
...全文
182 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
jellday 2013-10-29
  • 打赏
  • 举报
回复
是的,终于有人做到了!
苹果没有皮 2013-10-29
  • 打赏
  • 举报
回复
引用 6 楼 jellday 的回复:
也许我描述的不清楚。 我为什么要用复选框代替单选框呢? 因为单选框,一旦选中就不可取消。而复选框可以选中,也可以不选中。 我要实现的就是,当选中的时候,把选中的值传递到t,如果用户依次点击1、2、3、4,传递到t的值需要替换之前传递的值,也就是说,如果用户先输入“王”,然后依次点击1、2、3、4,那么出现的值只能是 王1、王2、王3、王4。 如果都不选中,出现的值必须返回“王”。 如果用户输入的是1,然后依次点击1、2、3、4,那么出现的值是11、22、33、44,如果都不选中,变回1。 能实现么?
你的意思是选中的那个值肯定是加在t的最后面的,但是当输入是数字的时候,选中后数字也得跟着改?如果不选中数字还得再变回来?
苹果没有皮 2013-10-29
  • 打赏
  • 举报
回复
引用 6 楼 jellday 的回复:
也许我描述的不清楚。 我为什么要用复选框代替单选框呢? 因为单选框,一旦选中就不可取消。而复选框可以选中,也可以不选中。 我要实现的就是,当选中的时候,把选中的值传递到t,如果用户依次点击1、2、3、4,传递到t的值需要替换之前传递的值,也就是说,如果用户先输入“王”,然后依次点击1、2、3、4,那么出现的值只能是 王1、王2、王3、王4。 如果都不选中,出现的值必须返回“王”。 如果用户输入的是1,然后依次点击1、2、3、4,那么出现的值是11、22、33、44,如果都不选中,变回1。 能实现么?

$(function(){
	var oldValue = "";
    $(":checkbox[name=a]").click(function(){
    	var regex = eval("/" + oldValue + "$/gi");
        if($(this).prop('checked')){
            $("input:checkbox[name=a]").not($(this)).prop('checked',false);
            //var regex = eval("/" + oldValue + "$/gi");
            $("#t").val($("#t").val().replace(regex, "") + $(this).val());
            oldValue = $(this).val();
        } else {
        	$("#t").val($("#t").val().replace(regex, ""));
        	oldValue = "";
        }   
    });
});
是这样不?
notlikeGaoShou 2013-10-28
  • 打赏
  • 举报
回复
引用 楼主 jellday 的回复:

<div style="margin:20px">
    <input name="a" type="checkbox" value="1" /><span>1</span>
    <input name="a" type="checkbox" value="2" /><span>2</span>
    <input name="a" type="checkbox" value="3" /><span>3</span>
    <input name="a" type="checkbox" value="4" /><span>4</span>
    <input id="t" type="text" value="" />
</div>

$(function(){
	$(":checkbox[name=a]").click(function(){
		if($(this).attr('checked')){
                $("input:checkbox[name=a]").not($(this)).attr('checked',false);
                }		
	});
});
以上已经是单选功能 请问,怎么样修改才能实现,选中后,输入框T加上选中的值,不选中将删去复选框的值。 请勿使用$('#t')val("")来重置输入框T,因为输入框可接受用户输入,不能将用户输入的值删除,只能删去复选框的值
我描述一下需求的,是不是用户可以输入1、2、3、4,但不能输入其他的值,用户不能删除输入的值,假如用户输入2那么第二个选中,删除值只能将2的选框勾选去掉,是那个意思不
conanhhy 2013-10-28
  • 打赏
  • 举报
回复
思路的话,LZ可以参考下面

var selectChkValue = {};
$(":checkbox").bind("click", function() {
    var txtValue = $("#txt").val();
    if ($(this).prop("checked") == true) {
        selectChkValue[$(this).attr("id")] = $(this).value();
        txtValue += "," + $(this).val();
    } else {
        var chkValue = selectChkValue[$(this).attr("id")];
        var replaceStr = "," + chkValue;
        txtValue = txtValue.replace(txtValue, "");
    }
    $("#txt").val(txtValue);
});
有一种情况需要LZ斟酌:如果用户输入的内容与CHECKBOX的值重复,如何处理?
jellday 2013-10-28
  • 打赏
  • 举报
回复
也许我描述的不清楚。 我为什么要用复选框代替单选框呢? 因为单选框,一旦选中就不可取消。而复选框可以选中,也可以不选中。 我要实现的就是,当选中的时候,把选中的值传递到t,如果用户依次点击1、2、3、4,传递到t的值需要替换之前传递的值,也就是说,如果用户先输入“王”,然后依次点击1、2、3、4,那么出现的值只能是 王1、王2、王3、王4。 如果都不选中,出现的值必须返回“王”。 如果用户输入的是1,然后依次点击1、2、3、4,那么出现的值是11、22、33、44,如果都不选中,变回1。 能实现么?
苹果没有皮 2013-10-28
  • 打赏
  • 举报
回复

$(function(){
	var oldValue = "";
    $(":checkbox[name=a]").click(function(){
        if($(this).prop('checked')){
            $("input:checkbox[name=a]").not($(this)).prop('checked',false);
            var regex = eval("/" + oldValue + "/gi");
            $("#t").val($("#t").val().replace(regex, "") + $(this).val());
            oldValue = $(this).val();
        }        
    });
});
是把原来选中的那个值去掉,然后加上新选中的值吗,可是这样会有一个问题,你自己输入的值也是1,2,3,4中的一个的话,也会被替换掉,不知道会不会有这种情况发生
hch126163 2013-10-28
  • 打赏
  • 举报
回复
选中的值,为什么要保存在 输入框? 如果一定要保存,可以用 <input type=hidden/>
树根之泥 2013-10-27
  • 打赏
  • 举报
回复
不太明白你的意思,$('#t')val($("#t")val()+$("input:checkbox:check").val())。是不是这个意思, 选中后 在 t里面 附加 选中的 checkbox值 而不是更改。

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧