javascript - Backbone.syphon 处理多个复选框

标签 javascript jquery backbone.js marionette backbone-views

今天用虹吸管遇到了障碍。

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

<input type="checkbox" name="cats" value="Whiskey">
<input type="checkbox" name="cats" value="Tango">
<input type="checkbox" name="cats" value="Cash">

我覆盖了复选框读取器以给我复选框的值:

Backbone.Syphon.InputReaders.register('checkbox', function(el){
        return el.val();  //fetch value not the boolean
    });

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

有没有人处理过这个?

最佳答案

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

  1. API 文档和带注释的代码库与我下载的实际最新代码不符。事实上,它有很大的不同。

  2. 检查键(输入的名称属性)以确定如何序列化它的数据。

有了这些知识,我可以通过执行以下 3 件事来获取我的复选框值作为值数组:

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

.

 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">

关于javascript - Backbone.syphon 处理多个复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18243275/

相关文章:

javascript - 如何更轻松地使用随机 href 设置 anchor ?

javascript - 谷歌地图:How to get points along the route in google maps,服务器端?

Javascript/JSON 输出不显示

jQuery悬停背景颜色

javascript - Jquery .click() 给我 "stack size exceeded"

javascript - 复制对象后删除对象属性时的奇怪行为

java - 如何修复 Spring Boot 不支持的请求方法 'POST'?

javascript - 如何在 Backbone Modal 中使用 cancelEl?

javascript - 如何使用 jQuery 仅验证一个 HTML 控件

javascript - jQuery/Backbone 和 Firefox 与 Chrome HTTP 请求