Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在datalink(jQuery)中使用设置字段设置单选按钮_Jquery_Jquery Plugins - Fatal编程技术网

在datalink(jQuery)中使用设置字段设置单选按钮

在datalink(jQuery)中使用设置字段设置单选按钮,jquery,jquery-plugins,Jquery,Jquery Plugins,我需要使用datalink(jQuery插件)中的setField()方法设置单选按钮 我已经在gitHub上阅读了有关这方面的问题,并看到了一个fork来解决它(),但这是针对jQuery的旧版本的 使用datalink插件的setField方法更新单选按钮的简单方法是什么,也许只需稍加修改?也许还有其他替代品/插件?多亏了此网站上某个问题的评论(https://github.com/jquery/jquery-datalink/issues/14#issuecomment-531732),我

我需要使用datalink(jQuery插件)中的setField()方法设置单选按钮

我已经在gitHub上阅读了有关这方面的问题,并看到了一个fork来解决它(),但这是针对jQuery的旧版本的


使用datalink插件的setField方法更新单选按钮的简单方法是什么,也许只需稍加修改?也许还有其他替代品/插件?

多亏了此网站上某个问题的评论(https://github.com/jquery/jquery-datalink/issues/14#issuecomment-531732),我改编了在那里找到的黑客。通过按如下方式更改设置字段方法,它可以工作:

(编辑-添加了设置复选框的代码)

之前:

    if ( target.nodeType ) {
        var setter = fnSetters[ field ] || "attr";
        $(target)[setter](value);
之后:

    if ( target.nodeType ) {
        var setter = fnSetters[ field ] || "attr";
        /* Hack to set radio buttons */
        if ($(target).is(':radio')) {
            $(target).parent().children(":radio[value='" + value + "']").attr('checked', true);
        } else if ($(target).is(':checkbox')) {
            if (target.value == value) $(target).attr('checked', true);
        } else {
            $(target)[setter](value);
        }

编辑-我还在GitHub上创建了原始的datalink项目,并添加了以下更改:

用以下更改更新了mydoghasworm的代码,以修复他在以下两个代码段中面临的“无法取消选中”问题

            if ( m ) {
                var name = m.name,
                    value = m.value,
                    convert = m.convert;
                if (ev.target.attributes['type'].nodeValue === "checkbox") {
                    value = ev.target.checked;
                }
                if ( convert ) {
                    value = convert( value, ev.target, target );
                }
                if ( value !== undefined ) {
                    $.setField( target, name, value );
                }


您是否有任何演示显示此功能正常工作?我自己也在试,运气不好。我已经在setField函数中添加了调试器行,但它们没有被命中。第一个代码段放在哪里?
} else if ($(target).is(':checkbox')) {
                //value is whether or not checkbox is clicked
                if (value)
                    $(target).attr('checked', true);
                else
                    $(target).removeAttr('checked');