首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Backbone.syphon处理多个复选框

Backbone.syphon处理多个复选框
EN

Stack Overflow用户
提问于 2013-08-14 22:18:46
回答 2查看 1.2K关注 0票数 1

今天和虹吸管撞上了路障。

它似乎无法处理将表单值序列化为特定用例的JSON :一组复选框,每个复选框都带有一个单独的值,但都命名相同。

代码语言:javascript
复制
<input type="checkbox" name="cats" value="Whiskey">
<input type="checkbox" name="cats" value="Tango">
<input type="checkbox" name="cats" value="Cash">

我重写了复选框读取器,给出了复选框的值:

代码语言:javascript
复制
Backbone.Syphon.InputReaders.register('checkbox', function(el){
        return el.val();  //fetch value not the boolean
    });

现在,我得到的是最后一个选定的值,而不是所有选定值的数组。

有人处理过这事吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-15 06:12:35

经过几个小时的努力,我有了一些发现:

  1. API文档和带注释的代码库与我下载的实际最新代码不匹配。事实上,这是完全不同的。
  2. 检查键(输入的name属性),以确定如何序列化其数据。

因此,有了这些知识,我就可以通过以下3件事情获得复选框值,作为一个值数组:

  1. 为复选框注册特定的输入读取器以返回值属性。
  2. 注册复选框验证器,以仅从复选框中收集值。
  3. 将括号附加到name属性以指示数组输入。

代码语言:javascript
复制
 Backbone.Syphon.InputReaders.register('checkbox', function (el) {
    return el.val();
 });

 Backbone.Syphon.KeyAssignmentValidators.register("checkbox", function ($el, key, value) {
    return $el.prop("checked");
 });

<input type="checkbox" name="cats[]" value="Whiskey">
<input type="checkbox" name="cats[]" value="Tango">
<input type="checkbox" name="cats[]" value="Cash">
票数 5
EN

Stack Overflow用户

发布于 2014-11-18 11:29:07

dbrin的一个问题是,常规复选框(而不是数组)会受到影响,因此您将得到带有选中输入的上的字符串值‘,以及带有未选中输入的布尔值false。我找到了这个解决方案:

代码语言:javascript
复制
Backbone.Syphon.InputReaders.register('checkbox', function ($el) {
  return ($el.attr('name').endsWith('[]')) ? $el.val() : $el.prop("checked");
});

Backbone.Syphon.KeyAssignmentValidators.register("checkbox", function ($el, key, value) {
  return ($el.attr('name').endsWith('[]')) ? $el.prop("checked") : true;
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18243275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档