敲除绑定文本框以选择文本

Posted

技术标签:

【中文标题】敲除绑定文本框以选择文本【英文标题】:Knockout bind textbox to select text 【发布时间】:2017-02-09 10:53:55 【问题描述】:

最近我开始学习前端开发,所以如果这个问题太愚蠢,请不要感到惊讶。 我想要做的是绑定文本框来选择文本,而不是它的 id。这是一个 jsfiddle:https://jsfiddle.net/1rtzfLr1/.

这是我的 html

<div data-bind="foreach: objects()">
  <input type="text" data-bind="value: type" />  
  <button type="button" data-bind="click: $parent.removeObject">-</button>
</div>
<div>
  <select data-bind="options: types, optionsValue: 'id', optionsText: 'title', optionsCaption: 'Type...', value: itemToAdd().type"></select>  
  <button id="create-object-button" type="button" data-bind="click: addObject">+</button>
</div>

还有 JS:

function model() 
  var self = this;

  self.objects = ko.observableArray();
  self.types = ko.observableArray([new Type(1, 'one'), new Type(2, 'two'), new Type(3, 'three')]);
  self.itemToAdd = ko.observable(new Object());

  self.addObject = function() 
    self.objects.push(self.itemToAdd());
    self.itemToAdd(new Object());
  ;

  self.removeObject = function(object) 
    self.objects.remove(object);
  ;

  function Object(type) 
    var self = this;
    self.type = type;
  

  function Type(id, title) 
    var self = this;
    self.id = id;
    self.title = title;
  
;

ko.applyBindings(new model());

问题是我想在文本框中显示two 而不是2,但同时这是应该提交的表单的一部分,在提交表单时我想提交@ 987654326@ 值,在实际应用中它是 java 枚举名称。

谢谢,如果问题太混乱,请见谅。

【问题讨论】:

【参考方案1】:

很抱歉,你不知道你在追求什么,但也许是这样的?http://jsfiddle.net/LkqTU/31963/

js

function type(id, title) 
  var self = this;
  self.id = ko.observable(id);
  self.title = ko.observable(title);
;

var initialArray = [
  new type(1, 'one'),
  new type(2, 'two'),
  new type(3, 'three')
]


function model() 
  var self = this;

  self.types = ko.observableArray(initialArray);
  self.options = ko.observableArray(initialArray);
  self.selectedtype = ko.observable('');
  self.removeObject = function(p) 
    self.types.remove(p);
  
  self.addObject = function() 
    self.types.push(new type(
      self.selectedtype().id(),
      self.selectedtype().title()));
  


var mymodel = new model();

$(document).ready(function() 
  ko.applyBindings(mymodel);
);

html

<div data-bind="foreach: types">
  <p>
    <span data-bind="text: id"></span>:
    <input type="text" data-bind="value: title" />
    <button data-bind="click: $parent.removeObject">
  </p>

  -
  </button>

</div>
<br/>
<select data-bind="options: options,
                       optionsText: 'title',
                       value: selectedtype,
                       optionsCaption: 'Choose...'"></select>
<button data-bind="click: addObject">+</button>

</button>

【讨论】:

以上是关于敲除绑定文本框以选择文本的主要内容,如果未能解决你的问题,请参考以下文章

将多行绑定到文本框以进行编辑+更新

ASP.NET MVC 敲除绑定不起作用

当元素在敲除“with”绑定中时,jQuery自动完成不会触发动作

使用敲除计算函数更新文本

Bootstrap 切换按钮的敲除绑定

asp.net 微信企业号办公系统-表单设计-文本框